Chartkick,在没有groupdate的情况下将对象组合在一起,在Ruby

时间:2017-12-10 18:13:03

标签: ruby-on-rails ruby group-by grouping chartkick

我使用最新的Chartkick 2.2.5和Rails 5.1.4,我试图绘制单位(车辆)及其状态(可用/不可用/等)并获得计数和通过图表踢图。

以下是我的视图代码:

<%= column_chart Status.includes(:units).order("name asc").map {|s| {name: s.name, data: s.units.group_by{|u| u.name}.count}}, library: {backgroundColor: "#F8F8F8"} %>

这导致以下显示:

enter image description here

所以它迭代了状态,但没有显示每个状态的单位数。也许我的红宝石错了,或者group_by不是我想要的。但是我希望能得到一些帮助。

我已经安装了groupdate,并且按日/周/月绘制其他对象没有问题,但是这个特定的图表需要按状态对每个单元进行原始计数,而且我不确定采用哪种方法。我将继续谷歌并参考Ruby API文档,但同时感谢任何帮助。

更新

我在这方面取得了一些进展,但如果分配给多个单位的状态(在此示例中为#34;停止服务&#34;分配给两个单位),则单位会显示两次,如您所见在图片里。这是我更新的代码:

<%= column_chart Status.joins(:units).order("name asc").map {|s| {name: s.name, data: s.units.group('units.name').count}}, library: {backgroundColor: "#F8F8F8"} %>

结果如下:

enter image description here

所以在我的红宝石中的某个地方,我无法使结果与众不同或独特。我尝试在状态和单位上调用uniq,并且使用未定义的类方法错误,并建议group_by作为替代而不是组。

如果我将其中一个单位更改为其他单位未使用的其他单位,则图表会正常显示,因此我认为我的Ruby很笨拙,需要一些帮助。

1 个答案:

答案 0 :(得分:1)

我还在处理状态和单位的排序,但是我可以通过在方法链中添加.uniq来获得不同的结果,如下所示:

App.js