在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

希望有所帮助!