【发布时间】:2012-11-08 22:24:59
【问题描述】:
我想对产品评论实施 AJAX Upvote / Downvote(stackoverflow 风格)。
每条评论都会产生部分投票:
_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?
或实现此功能的任何其他替代方案。
提前致谢!
【问题讨论】:
-
您不需要将 upvote.js.erb 包装在准备好的文档中,因为在触发 AJAX 请求时该文档应该已经准备好了。
-
请向我们展示upvote 操作的代码。理想情况下,您应该在其中定义一个
@review变量,可以使用它。
标签: jquery ajax ruby-on-rails-3