因此,我的投票链接正在替换所有链接的投票计数器,而不是单个链接。救命?

控制者

  def upcount
    @category = Category.find(params[:id])
    @category.upcount
    @category.save
    respond_to do |format|
      format.html {redirect_to categories_path(@category)}
      format.js
    end
  end


视图

  <% @categories.each do |category| %>
  <div class="col-md-3 col-sm-6 hero-feature">
    <div class="thumbnail">
      <%= image_tag category.image.url(:large) %>
      <div class="caption">
        <%= category.name %> - <%= category.quote %></p>
        <%= link_to "Upvote", upcount_category_path(category), method: "put", remote: true %>
        <div id="total-votes">
          <%= category.count %>
        </div>
      </div>
    </div>
  </div>
  <% end %>


Upcount.js.erb

$("#total-votes").html("<%= @category.count %>")


单击第二个链接将把第一个和第二个链接替换为15。感谢您的帮助。谢谢!

最佳答案

HTML ID是唯一的。您重复填写的“投票总数” ID导致HTML无效。这也使您的JavaScript感到困惑,因为它不知道您要定位的div。

您可以通过将类别ID添加到html ID之类的total-votes-<%= category.id %>来解决此问题,以使它对所有用户都是唯一的。

完整示例:

查看文件

<% @categories.each do |category| %>
  <div class="col-md-3 col-sm-6 hero-feature">
    <div class="thumbnail">
      <%= image_tag category.image.url(:large) %>
      <div class="caption">
        <%= category.name %> - <%= category.quote %></p>
        <%= link_to "Upvote", upcount_category_path(category), method: "put", remote: true %>
        <div id="total-votes-<%= category.id %>">
          <%= category.count %>
        </div>
      </div>
    </div>
  </div>
  <% end %>


Upcount.js.erb

$("#total-votes-<%= @category.id %>").html("<%= @category.count %>")

07-24 18:31
查看更多