简单的喜欢/不像带有rails 3,jquery和ajax的按钮
我有一个产品,用户和类似的模型。 用户可以喜欢产品。 我正在尝试实现一个简单的按钮,只需点击一下,就可以让用户喜欢产品。 然后,like按钮转换为不同的按钮,允许用户不同于产品。 很简单。
我已经为上面实现了模型/控制器逻辑。 我对javascript / ajax不是很了解,并且想知道实现上述function的最佳方法是什么。 我希望通过ajax处理like / different动作。 我正在为我的应用程序使用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
参数。 但我想你想向用户提供某种反馈。 看看这个截屏video。