我正在将这个宝石实施到我的网站中。但是,我正在尝试实现更多功能。我竖起了大拇指和拇指向下的图标,用户将点击这些图标进行投票。然后我更进一步尝试实现与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。没有错误日志,只是错误的图像加载。
感谢您的努力和时间!
答案 0 :(得分:2)
更新:找到了解决方案。这个gem的开发人员更新了evaluation.rb文件,因此发送的查询错误。您要么更正您发送的查询,要么使用旧版本(1.5.1)。
感谢所有试图提供帮助的人。