Как обновить строки таблицы с помощью JavaScript в рельсы частично - PullRequest
0 голосов
/ 31 января 2012

У меня есть таблица:

<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 Ответ

1 голос
/ 31 января 2012

Идентификаторы элементов должны быть уникальными по всему документу.Вот почему обновляется только первый элемент.

Вы должны назначить идентификаторы, которые на самом деле уникальны.Например, используйте идентификатор статьи:

    <div id="vote_score_<%= article.id %>">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...