如何使用rails部分中的javascript更新表行

时间:2012-01-30 20:38:42

标签: javascript ruby-on-rails ajax

我有一张桌子:

<table class="articles"> 
      <%= render :partial => 'articles/article' , :collection => @articles  %> 
</table>

以及以下部分:

<tr> 
  <td>
    <div id="vote_form"> 
     <% form_tag url_for(article_votes_path(article)), :remote => true  do %> 
      <%= image_submit_tag("vote-arrow-up.png", :alt => "Vote-up", :id => "voteup_button") %>
     <% end %>
    </div>
    <div id="vote_score">
      <% form_tag url_for(article_votes_path(article)), :remote => true  do %>  
         <%= image_submit_tag("vote-arrow-down.png", :alt => "Vote-down", :id => "votedown_button") %> 
      <% end %>
    </div> 
    <div id="vote_score">
    Votes: <%= article.votes.count %>
    </div>
 </td>
</tr>

我用来异步更新投票得分的Javascript是:

    $("vote_score").update('<%= "Votes: #{@article.votes.count}" %>')

代码正确地工作和更新文章的相应计数,但仅在第一个表行中这样做。例如,如果我以5票对第三行中的文章进行投票,则分数会异步更新,并且第一行中会显示6。如果我以100票的方式对第五行中的文章进行投票,则第一行中的分数将显示为101.当重新加载页面时,每篇文章都有正确的投票计数。如何修改此javascript以更新投票按钮各自表格行中的计数?

1 个答案:

答案 0 :(得分:1)

元素ID在整个文档中应该是唯一的。这就是为什么只有第一个元素得到更新。

您应该指定实际上唯一的ID。例如,使用文章ID:

    <div id="vote_score_<%= article.id %>">