我有一个产品、用户和类似的模型。用户可以喜欢产品。我正在尝试实现一个简单的点赞按钮,点击后,用户可以点赞产品。然后,like 按钮转换为like 按钮,允许用户对产品进行不同的操作。很简单。
我已经实现了上述的模型/控制器逻辑。我对 javascript/ajax 不是很好,想知道实现上述功能的最佳方法是什么。我希望通过 ajax 处理喜欢/不喜欢的动作。我正在为我的应用程序使用 rails 3 和 jquery ujs。
谢谢。
我有一个产品、用户和类似的模型。用户可以喜欢产品。我正在尝试实现一个简单的点赞按钮,点击后,用户可以点赞产品。然后,like 按钮转换为like 按钮,允许用户对产品进行不同的操作。很简单。
我已经实现了上述的模型/控制器逻辑。我对 javascript/ajax 不是很好,想知道实现上述功能的最佳方法是什么。我希望通过 ajax 处理喜欢/不喜欢的动作。我正在为我的应用程序使用 rails 3 和 jquery ujs。
谢谢。
我对你的问题的回答很长,所以我写了一个示例应用程序。这是一个片段:
给这只猫换皮的方法有很多,但我喜欢渲染部分和单个 ujs 模板。
_like_button.html.erb
:
<% if like = current_user.likes.find_by_product_id(@product.id) %>
<%= form_for like, :html => { :method => :delete },
:remote => true do |f| %>
<%= f.submit "Unlike" %>
<% end %>
<% else %>
<%= form_for current_user.likes.build(:product_id => @product.id), :remote => true do |f| %>
<%= f.hidden_field :product_id %>
<%= f.hidden_field :user_id %>
<%= f.submit "Like" %>
<% end %>
<% end %>
toggle.js.erb
,"#like"
包含表单的 div 在哪里:
$("#like").html("<%= escape_javascript render('like_button') %>");
基本上,要使您的链接通过 AJAX 工作,您只需要提供link_to
参数:remote => true
即可。但我猜你想给用户一些反馈。看看这个截屏视频。