0

Chartkick 很棒,我可以做超级简单的事情,比如

<%= column_chart Device.joins(:reviews).group(:brand).average(:average_rating) %>

并得到如下结果:

在此处输入图像描述

现在,问题是标签没有被馈送到chartkick。这是 chartkick 用来呈现图表的内容:

Chartkick.ColumnChart("chart-5", {"#<Brand:0x00000008a3c048>":"78.8","#<Brand:0x0000000879e840>":"80.70000712076823","#<Brand:0x0000000853e9d8>":"81.11111111111111","#<Brand:0x000000082808e0>":"73.42857142857143"}, {});

所以,最大的问题是......我怎样才能使用这种超级简单的查询方法,但要在图表上获得品牌名称?

我试过了:

<%= column_chart Device.joins(:reviews).group(:'brand.name').average(:average_rating) %>

...和其他变化无济于事...

4

1 回答 1

4

基本上我只需要对我的查询做一个小改动:

<%= column_chart Device.joins(:reviews).includes(:brand).group(:'brands.name').average(:average_rating) %>

然后我最终通过平均收视率而不是品牌名称重新排序:

devices = Device.joins(:reviews).includes(:brand).group('brands.name').average(:average_rating)
arr = styles.to_a
arr.map! { |pair| [pair.first, pair.second.to_f] }
arr.sort! { |a, b| a.second <=> b.second }
@sorted_hash = ActiveSupport::OrderedHash[arr]

看法:

<%= column_chart @sorted_hash %>

答对了:

在此处输入图像描述

于 2014-06-02T19:34:51.840 回答