我有一张桌子:
<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以更新投票按钮各自表格行中的计数?
答案 0 :(得分:1)
元素ID在整个文档中应该是唯一的。这就是为什么只有第一个元素得到更新。
您应该指定实际上唯一的ID。例如,使用文章ID:
<div id="vote_score_<%= article.id %>">