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) %>
...和其他变化无济于事......
答案 0 :(得分: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 %>
宾果: