2

我想对产品评论(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 时,partial 将被重新渲染以显示新的投票数。

问题是,一个页面中有很多评论。在 AJAX 调用之后,JavaScript 不知道哪个评论的投票偏向于重新呈现。( $('#vote_id???') 部分)

Rails 有没有办法将评论 ID 传递给 JavaScript?

或实现此功能的任何其他替代方案。

提前致谢!

4

1 回答 1

4

如果您@review在操作中定义了一个变量upvote,就像我怀疑的那样,那么您可以这样做:

$('#vote_<%= @review.id %>').html("<%= escape_javascript render :partial => 'votes/vote' %>");
于 2012-11-08T22:28:20.393 回答