簡體   English   中英

Acts_As_Votable寶石自動喜歡一切

[英]Acts_As_Votable Gem Automatically Liking Everything

我在Ruby on Rails項目中使用acts_as_votable gem喜歡和不喜歡“ Deals”。 我的用戶設置為act_as_voter,我的交易設置為acts_as_votable,但是由於某種原因,一切都被設置為創建新用戶后就喜歡,並且他們與交易無異。 由於某種原因,我的交易清單都有一個與眾不同的按鈕,除了刷新頁面外,它實際上沒有任何作用。 這是我的一些代碼。

app / views / catalog / index.html.erb

<ul class="deals_list">
  <% @deals.each do |deal| %>
    <li>
      <div>
        ...
      <div class="favorite">
        <% if account_signed_in? and current_account.accountable_type == "Personnel" %>
          <%= image_tag("dark-favorite.png") %>
          <% if deal.liked_by current_account %>
            <%= link_to unlike_deal_path(deal), method: :put do %>
              Unlike
            <% end %>
          <% else %>
            <%= link_to like_deal_path(deal), method: :put do %>
              Like
            <% end %>
          <% end %>
        <% end %>
      </div>
    </li>
  <% end %>
</ul>

app / controllers / deals_controller.rb

def like
    @deal = Deal.find(params[:id])
    @deal.liked_by current_account
    redirect_back(fallback_location: catalog_index_url)
  end

  def unlike
    @deal = Deal.find(params[:id])
    @deal.unliked_by current_account
    redirect_back(fallback_location: catalog_index_url)
  end

config / routes.rb

resources :deals do
    member do
      put 'like', to: "deals#like"
      put 'unlike', to: "deals#unlike"
    end
  end

請確保並閱讀整個自述文件,因為您使用的庫不正確。

要檢查選民是否對模型進行了投票,可以使用voted_for?。 您可以使用voted_as_when_voted_for檢查投票人的投票方式。

由於您希望看到“?”,所以我將您的問題歸零。 在deal.liked_by調用之后,這將指示布爾結果(按照慣例,並非總是如此)。

所以改用這個:

<% if current_account.voted_for? deal %>

暫無
暫無

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

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