我正在實施這個寶石到我的網站。但是我試圖實現一些更多的功能。我放置了一個豎起大拇指和拇指向下的圖標,用戶將點擊進行投票。然後,我又進一步嘗試實施與YouTube系統類似的投票方式。我想,當用戶點擊圖標上的投票,將顏色變成綠色。Activerecord聲譽系統Gem - 額外的功能實現
幸運的是,我發現其他人也嘗試過,但我按照他的指示遇到問題。這傢伙做的是位於Active Record Reputation System - Railscasts和他的用戶名是kobaltz。
所以,當我嘗試實現這個到我的項目中的圖標(加載的圖像)不會改變。我不斷看到紅色的圖像。
我試圖調試,並發現這個代碼段導致問題
def up_voted_for?(item)
eval = evaluations.where(target_type: item.class, target_id: item.id).first
eval.present? && eval.value > 0 ? true : false
end
其中EVAL在nill代碼執行後。
所以對於顯示正確的圖像的代碼,如果用戶投票與否是:
<% if can? :vote, answers %>
<% if current_user.up_voted_for?(answers) %>
<%= image_tag("color_up_arrow.png") %>
<% else %>
<%= link_to image_tag("gray_up_arrow.png"), vote_answer_path(answers, type: "up"), method: "post" %>
<% end %>
<% end %>
給了所有的代碼清晰的圖像,評價爲在user.rb文件:
has_many :evaluations, class_name: "RSEvaluation", as: :source
請讓我知道你的想法。如果需要任何其他信息,請告訴我。
p.s.沒有錯誤日誌,只是不正確的圖像加載。
謝謝你的努力和時間!