所以我的upvote链接正在替换所有链接的投票计数器而不是单个链接。帮助
控制器
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.任何帮助表示赞赏。谢谢!
答案 0 :(得分:2)
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 %>")