将Rails变量传递给AJAX调用

时间:2012-11-08 22:24:59

标签: jquery ajax ruby-on-rails-3

我想在产品评论(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?

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

提前致谢!

1 个答案:

答案 0 :(得分:4)

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

$('#vote_<%= @review.id %>').html("<%= escape_javascript render :partial => 'votes/vote' %>");