[英]Rails: update the number of votes 'votes_count' with Ajax
我的rails應用程序中有一個非常簡單的upvote系統。 每當有人投票給Pin時,我都想通過ajax請求來更新votes_count。 但是我無法弄清楚我所缺少的。
應用程序/控制器/ pin_controller.rb
def upvote
@pin = Pin.friendly.find(params[:id])
@pin.votes.create(user_id: current_user.id)
respond_to do |format|
format.json { render json: { count: @pin.votes_count } }
end
end
應用程序/視圖/針/ index.html.erb
<span class='pin-<%=pin.id%>'>
<%= link_to upvote_pin_path(pin), method: :put, remote: true do %>
<% if pin.votes.where(user_id: current_user.id).empty? %>
<i class="fa fa-star"></i>
<%= pin.votes.count %>
</span>
*應用/視圖/針/ upvote.js.erb
$("pin-<%=pin.id%>").html('<%=escape_javascript pin.votes.count %>');
有什么想法讓我無法實現嗎?
更新: 來自控制台的錯誤:
發送jquery.js?body = 1:9667jQuery.extend.ajax jquery.js?body = 1:9212 $ .rails.rails.ajax jquery_ujs.js?body = 1:81 $ .rails.rails.handleRemote jquery_ujs.js? body = 1:157(匿名函數)jquery_ujs.js?body = 1:307jQuery.event.dispatch jquery.js?body = 1:4625elemData.handle
服務器日志錯誤:
ActionView :: Template :: Error( gsub' for 3:Fixnum): 1: $(".pin-<%=@pin.id%>").html('<%=escape_javascript @pin.votes.count %>'); app/views/pins/upvote.js.erb:1:in
未定義方法gsub' for 3:Fixnum): 1: $(".pin-<%=@pin.id%>").html('<%=escape_javascript @pin.votes.count %>'); app/views/pins/upvote.js.erb:1:in
gsub' for 3:Fixnum): 1: $(".pin-<%=@pin.id%>").html('<%=escape_javascript @pin.votes.count %>'); app/views/pins/upvote.js.erb:1:in
_app_views_pins_upvote_js_erb___4096032730150237755_70323561115600'app / controllers / pins_controller.rb:53:在`upvote'中
解:
將此行修改為upvote.js.erb:
$(“。pin-<%= @ pin.id%>”)。html('<%= @ pin.votes.count%>');
使用“ format.js”,而不是“ format.json”。
您有幾個錯誤:
應用程序/控制器/ pin_controller.rb
def upvote
@pin = Pin.friendly.find(params[:id])
@pin.votes.create(user_id: current_user.id)
respond_to do |format|
format.js # no need to pass a variable here
end
end
app / views / pins / index.html.erb,您沒有輸入<%end%>
<span class='pin-<%=pin.id%>'>
<%= link_to upvote_pin_path(pin), method: :put, remote: true do %>
<% if pin.votes.where(user_id: current_user.id).empty? %>
<i class="fa fa-star"></i>
<% end %>
<% end %>
<%= pin.votes.count %>
</span>
* app / views / pins / upvote.js.erb jQuery選擇器錯誤,變量調用也錯誤
$(".pin-<%=@pin.id%>").html('<%= @pin.votes.count.to_s %>');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.