1

我正在将这个 gem 实现到我的网站中。但是我正在尝试实现更多功能。我放置了一个竖起大拇指和大拇指向下的图标,用户将单击该图标进行投票。然后我更进一步,尝试实现与 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

执行代码后的 eval 在哪里。

因此,如果用户投票与否,则显示正确图像的代码是:

  <% 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 回答