因此,我的投票链接正在替换所有链接的投票计数器,而不是单个链接。救命?
控制者
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 %>")