私はこの宝石を私のウェブサイトに実装しています。しかし、私はいくつかのより多くの機能を実装しようとしています。ユーザーが投票するためにクリックするアイコンを上向きと下向きに配置しました。それから私はそれをさらに一歩進めて、youtubeのシステムと同様の投票アプローチを実装しようとしました。ユーザーが投票をクリックすると、アイコンの色が緑色に変わります。
幸いなことに、他の誰かがそれを試したことを知りましたが、彼の指示に従うのに問題があります。この男がしたことは、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
ここで、コードの実行後の評価は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
あなたの考えを教えてください。その他の情報が必要な場合はお知らせください。
psエラーログはなく、間違った画像が読み込まれるだけです。
お手数をおかけしますが、よろしくお願いいたします。