Мой ответ на ваш вопрос длинный, поэтому я написал пример приложения . Вот фрагмент кода:
Есть много способов снять шкуру с этой кошки, но мне нравится визуализировать частичный и единственный шаблон 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') %>");