gpt4 book ai didi

ruby-on-rails - 在 Rails 应用程序中使用带有 Chartkick 的实例方法

转载 作者:行者123 更新时间:2023-12-04 15:28:22 27 4
gpt4 key购买 nike

我有一个模型,团队有一个实例方法 point_ Differential (基本上是点对点 - 点反对)。我试图在 Chartkick 图表中使用它,但没有运气。

这有效

= bar_chart Team.group(:group).sum(points_for)

因为points_for只是Team模型的一个属性。

这不是因为 point_difference 是一个实例方法,而不是一个属性

= bar_chart Team.group(:name).sum(point_differential)

也没有

= bar_chart Team.group(:name).sum(&:point_differential)

也没有

bar_chart = Team.all.map {|team| {name:team.name, point_differential: team.point_differential}}

有什么想法吗?

最佳答案

您的最后一个选项几乎是正确的,但格式错误。

考虑你的第一个例子:

Team.group(:group).sum(:points_for)

这将创建如下所示的哈希:

{"Team A" => 14, "Team B" => 9}

在上一个示例中,您执行了以下操作:

Team.all.map {|team| {name:team.name, point_differential: team.point_differential}}

这将创建一个哈希数组,如下所示:

[{:name => "Team A", :point_differential => 14}, {:name => "Team B", :point_differential => 9}]

相反,试试这个:

Hash[ *Team.all.map { |team| [team.name, team.point_differential] }.flatten ]

这是一个深奥的单行代码,它接受一组数组(每个数组有 2 个元素),并从中创建一个散列,为您提供如下所示的内容:

{"Team A" => 14, "Team B" => 9 }

如你所愿。

另一种显示更多步骤的方法如下:

hash = {}
Team.all.each do |team|
hash[team.name] = team.point_differential
end

然后该哈希将具有正确的值。

关于ruby-on-rails - 在 Rails 应用程序中使用带有 Chartkick 的实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24458286/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com