1

私はこの宝石を私のウェブサイトに実装しています。しかし、私はいくつかのより多くの機能を実装しようとしています。ユーザーが投票するためにクリックするアイコンを上向きと下向きに配置しました。それから私はそれをさらに一歩進めて、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エラーログはなく、間違った画像が読み込まれるだけです。

お手数をおかけしますが、よろしくお願いいたします。

4

1 に答える 1

2

更新:これに対する解決策を見つけました。このgemの開発者は、evaluation.rbファイルを更新したため、送信されたクエリが間違っていました。送信したクエリを修正するか、古いバージョン(1.5.1)を使用します。

助けようとしたすべてに感謝します。

于 2013-04-21T17:06:13.417 に答える