Activerecord信誉系统Gem - 额外的功能实现

时间:2013-03-19 22:34:33

标签: ruby-on-rails activerecord

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

请告诉我你的想法。如果需要任何其他信息,请告诉我。

P.S。没有错误日志,只是错误的图像加载。

感谢您的努力和时间!

1 个答案:

答案 0 :(得分:2)

更新:找到了解决方案。这个gem的开发人员更新了evaluation.rb文件,因此发送的查询错误。您要么更正您发送的查询,要么使用旧版本(1.5.1)。

感谢所有试图提供帮助的人。