我想在产品评论(stackoverflow样式)上实现AJAX Upvote / Downvote。
每次审核都会产生部分投票:
_vote.html.erb
<div id="vote_<%= review.id %>" class="vote">
<%= link_to 'Vote Up', upvote_kata_review_path(@product, @review), :class => "upvote", :method => :post, :remote => true %>
<span><%= review.plusminus %></span> <!--show the current vote-->
<%= link_to 'Vote Down', downvote_kata_review_path(@product, @review), :class => "downvote", :method => :post, :remote => true %>
</div>
和upvote.js.erb
$(document).ready(function(){
$('#vote_id???').html("<%= escape_javascript render :partial => 'votes/vote' %>");
});
因此,当用户点击upvote时,将重新呈现部分以显示新的投票数。
问题是,页面中有很多评论。在AJAX调用之后,JavaScript不知道哪个评论的投票部分重新呈现。 ($('#vote_id ???')部分)
Rails有没有办法将审核ID传递给JavaScript?
或实现此功能的任何其他替代方法。
提前致谢!
答案 0 :(得分:4)
如果您在@review
操作中定义了upvote
变量,就像我怀疑您可能那样,那么您可以这样做:
$('#vote_<%= @review.id %>').html("<%= escape_javascript render :partial => 'votes/vote' %>");