简单的喜欢/不像带有rails 3,jquery和ajax的按钮

时间:2011-06-26 05:43:25

标签: jquery ajax ruby-on-rails-3 ujs

我有一个产品,用户和类似的模型。用户可以喜欢产品。我正在尝试实现一个简单的按钮,只需点击一下,就可以让用户喜欢产品。然后,like按钮转换为不同的按钮,允许用户不同于产品。很简单。

我已经为上面实现了模型/控制器逻辑。我对javascript / ajax不是很了解,并且想知道实现上述功能的最佳方法是什么。我想通过ajax处理喜欢/不同的动作。我正在为我的应用程序使用rails 3和jquery ujs。

感谢。

2 个答案:

答案 0 :(得分:36)

我对你问题的回答很长,所以我写了example application。这是一个片段:

有很多方法可以遮蔽这只猫,但我喜欢渲染部分和单个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') %>");

答案 1 :(得分:1)

基本上,要使您的链接通过AJAX工作,您只需要提供link_to :remote => true参数。但我想你想向用户提供某种反馈。看一下this截屏视频。