我使用最新的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"} %>
这导致以下显示:
所以它迭代了状态,但没有显示每个状态的单位数。也许我的红宝石错了,或者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"} %>
结果如下:
所以在我的红宝石中的某个地方,我无法使结果与众不同或独特。我尝试在状态和单位上调用uniq
,并且使用未定义的类方法错误,并建议group_by
作为替代而不是组。
如果我将其中一个单位更改为其他单位未使用的其他单位,则图表会正常显示,因此我认为我的Ruby很笨拙,需要一些帮助。
答案 0 :(得分:1)
我还在处理状态和单位的排序,但是我可以通过在方法链中添加.uniq来获得不同的结果,如下所示:
App.js