簡體   English   中英

作為可投票的行為 - 在主頁上刷新like-count [Rails - AJAX]

[英]Acts as votable - refresh likes-count on home page [Rails - AJAX]

作為可投票的行為我有一點問題。

我喜歡的按鈕和計數在我的每個“軟件”的頁面上正確刷新(使用AJAX)。 但是在主頁上沒有正常工作(或者有幾個軟件)。

當我點擊類似按鈕(在我的主頁上)時,likes-count會更新,但值會更新並且對於所有軟件都是相同的(但是當我手動刷新頁面時,值是正確的)。

我找不到解決這個問題的方法。

我的代碼:

softwares_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> 

主頁視圖

<%= 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>  

的routes.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 %>');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM