[英]Rails Voting Ajax(acts_as_votable)
我目前正在一个项目中,正在将acts_as_votable gem用于类似系统。 我使用的是glypicons而不是按钮。 一切正常,但是问题是当我单击“赞”时,每个帖子都被点赞,但是我只希望所选的帖子被点赞。
在post_controller中:
def upvote
@post = Post.find(params[:id])
@post.upvote_from current_user
respond_to do |format|
format.html { redirect_to :back }
format.js
end
end
在index.html.erb中:
<div class='votee'>
<%= render partial: 'vote', locals: {:@post => post}%>
</div>
在Partial _vote.html.erb中,我有
<small class="likecount-<%= @post.id %>"><%= pluralize(@post.get_upvotes.size, 'like', 'like\'s' )%> </small>
<% if current_user.voted_up_on? @post %>
<%= link_to like_post_path(@post), class: "like", method: :put, remote: true do%>
<i class="fa fa-heart fa-lg" style="color:#900603;"></i>
<% end -%>
并在upvote.js.erb中
$('.votee').html('<%= j render partial: 'vote'%>');
$('.likecount-<%= @post.id %>').html('<%= j pluralize(@post.get_upvotes.size, 'like', 'like\'s' )%>');
路线工作正常。 在此先感谢您的帮助。
我认为该错误与...有关
<%= render partial: 'vote', locals: {:@post => post} %>
... 它应该是 ...
<%= render partial: 'vote', locals: {post: post} %>
-
部分应该摆脱@post
并改为post
:
<small class="likecount-<%= post.id %>"><%= pluralize(post.get_upvotes.size, 'like', 'like\'s' )%> </small>
<% if current_user.voted_up_on? post %>
<%= link_to like_post_path(post), class: "like", method: :put, remote: true do%>
<i class="fa fa-heart fa-lg" style="color:#900603;"></i>
<% end -%>
<% end -%>
-
您的JS应该如下所示:
$('.votee#<%= post.id %>').html('<%= j render "vote", locals: { post: @post } %>');
// other line is okay
您还需要最佳的更新index
方法将添加id
到您的votee
DIV:
<div class='votee' id="<%= post.id %>">
...
</div>
问题可能是正在更新所有帖子的JS。 实际的数据库可能仅针对单个帖子进行更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.