我有一個產品,用戶和類似的模型。用戶可以喜歡產品。我試圖實現一個簡單的按鈕,一旦點擊,就可以讓用戶喜歡產品。然後類似的按鈕變成不同的按鈕,使用戶不同於產品。非常簡單。簡單的像/不像按鈕與導軌3,jQuery和AJAX
我已經實現了上述的模型/控制器邏輯。我對javascript/ajax不是很好,並且想知道實現上述功能的最好方法是什麼。我想通過ajax處理類似/不同的動作。我使用rails 3和jquery ujs作爲我的應用程序。
謝謝。
我有一個產品,用戶和類似的模型。用戶可以喜歡產品。我試圖實現一個簡單的按鈕,一旦點擊,就可以讓用戶喜歡產品。然後類似的按鈕變成不同的按鈕,使用戶不同於產品。非常簡單。簡單的像/不像按鈕與導軌3,jQuery和AJAX
我已經實現了上述的模型/控制器邏輯。我對javascript/ajax不是很好,並且想知道實現上述功能的最好方法是什麼。我想通過ajax處理類似/不同的動作。我使用rails 3和jquery ujs作爲我的應用程序。
謝謝。
我對你的問題的回答很長,所以我寫了一個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') %>");
基本上,爲了讓你的鏈接通過AJAX工作,你只需要提供link_to
和:remote => true
的參數。但我想你想向用戶提供某種反饋。看看this截屏。
人,其如此真棒,你這樣做。您的示例應用程序確實幫助我理解這是如何工作的Thx一噸! – p01nd3xt3r
謝謝你的客氣話! – dwhalen
@dwhalen,我找不到鏈接的示例應用程序了。我正在嘗試在我的應用程序中執行相同的操作,並且在應用程序中使用了幾乎相同的代碼。第一次在一切正常的時候,Like按鈕就會顯示出來,點擊它就會切換到不同的狀態。但是,當我嘗試點擊不同按鈕時,沒有任何反應。有什麼建議麼? – Anand