gpt4 book ai didi

ruby-on-rails - 充当可投票者 - 在主页上刷新喜欢计数 [Rails - AJAX]

转载 作者:行者123 更新时间:2023-12-03 15:05:26 24 4
gpt4 key购买 nike

我对可投票的行为有一点疑问。

我的“喜欢”按钮和计数在我的每个“软件”页面上正确刷新(使用 AJAX)。但是在主页(或者有几个软件)上不能正常工作。

当我点击一个赞按钮(在我的主页上)时,点赞计数会更新,但值会更新并且所有软件都相同(但当我手动刷新页面时,值是正确的)。

我找不到这个问题的解决方案。

我的代码:

软件 Controller .rb

 def upvote
if !current_user.liked? @software
@software.liked_by current_user
elsif current_user.liked? @software
@software.unliked_by current_user
end
respond_to do |format|
format.html { redirect_back(fallback_location: root_path) }
format.js
end
end

软件/节目

<%= link_to like_software_path(@software), class:"like-btn", method: :put, remote: true do %> 
<button class="btn btn-warning">
<span><p><i class="fa fa-thumbs-up fa-lg" aria-hidden="true"></i></p></span>
</button>
<% end %>
<span class="likes-count"> <%= @software.get_upvotes.size %> </span>

主页 View

<%= link_to like_software_path(software), class:"like-btn", method: :put, remote: true do %> 
<button class="btn btn-warning">
<span><p><i class="fa fa-thumbs-up fa-lg" aria-hidden="true"></i></p></span>
</button>
<% end %>
<span class="likes-count"> <%= software.get_upvotes.size %> </span>

路线.rb

resources :softwares do
member do
put "like" => "softwares#upvote"
put "dislike" => "softwares#downvote"
end
end

软件/upvotes.js.erb

<% if current_user.liked? @software %>
$(".likes-btn").addClass("liked");
<% else %>
$(".likes-btn").removeClass("liked");
<% end %>
$(".likes-count").addClass("liked").html('<%= @software.get_upvotes.size %>');

编辑:或者当我更改我的主页时:

<%= link_to like_software_path(@software), class:"like-btn", method: :put, remote: true do %> 
<button class="btn btn-warning">
<span><p><i class="fa fa-thumbs-up fa-lg" aria-hidden="true"></i></p></span>
</button>
<% end %>
<span class="likes-count"> <%= @software.get_upvotes.size %> </span>

我有一个错误:

No route matches {:action=>"upvote", :controller=>"softwares", :id=>nil}, missing required keys: [:id]

最佳答案

这一行:

$(".likes-count").addClass("liked").html('<%= @software.get_upvotes.size %>');

正在使用 .likes-count 类更新所有元素的显示投​​票计数值。要解决此问题,请更改:

<span class="likes-count"> <%= software.get_upvotes.size %> </span>

包含软件的 id,并在您的 js 中定位它。

<span class="likes-count" id="software-<%= software.id %>">
<%= software.get_upvotes.size %>
</span>

软件/upvotes.js.erb

$("#software-<%= @software.id %>").addClass("liked").html('<%= @software.get_upvotes.size %>');

关于ruby-on-rails - 充当可投票者 - 在主页上刷新喜欢计数 [Rails - AJAX],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50708682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com