在Papertrail中显示各个记录的所有版本
我正在建立一个联盟系统,目前它根据结果存储和更新球员的’elo得分’。 现在,我试图添加“HighCharts”,以一个甜美的线条图显示本赛季的球员elo得分。 有人建议我使用Papertrail存储更新,我已经安装了所有更新。
现在我的问题出现了,我似乎无法弄清楚如何在一个易于’HighCharts’使用的数组中吐出用户的elo_score版本。 我可以获得elo_score的最新更新:
Last updated score =
但我似乎无法找到为’elo_score’吐出所有 ‘版本’的语法。 类似“1000,1020,1043,1020”的东西。
我也尝试过:
但这给了我“未定义的方法`elo_score’为nil:NilClass”。 只是吐出记录中的所有信息,显然不仅仅是elo_score。
有人可以帮忙吗? 对不起,如果我没有说清楚,我对rails来说是绝对的全新,这在我的业余时间只是一个有趣的项目,但我有一个爆炸!
非常感谢!
你在这做了什么:
@player.versions.map { |version| version.reify.elo_score }
完全可以拿走所有这些分数并将它们放入arrays中。 你得到的问题( nil:NilClass
东西)即将到来,因为至少有一个reify
是零。 也就是说,某些版本没有reify。
如果每个版本都应该有一个reify,请务必将其添加为模型validation,并在代码中找到reify的设置,并查看为什么它是nil。
如果一个版本有一个nil reify是可以的,你可以通过多种方式完成它,但直截了当的显式方式如下所示:
elo_scores = [] @player.versions.each do |version| unless version.reify.nil? elo_scores << version.reify.elo_score end end
我建议把它放到一个方法,比如get_elo_scores
,然后你可以更容易地调用它:
@player.get_elo_scores
编辑从评论中澄清:
您的用户模型(或播放器模型,无论您将其命名为什么)都应该具有如下所示的方法:
def get_elo_scores elo_scores = [] self.versions.each do |version| unless version.reify.nil? elo_scores << version.reify.elo_score end end return elo_scores end
我为没有让这个更清楚而道歉,但是你不能在这个方法中访问@player
,因为它只存在于你的控制器和视图的上下文中。 以上是一个正确的实例方法:它将自己调用.versions
,其余的.versions
。 我还在最后添加了一个显式的回调。
现在,您可以在任何用户(或播放器)对象上调用@player.get_elo_scores
。
希望有所帮助!