我有一个模型级别,每次定义时,它会记录8个不同水箱的水平值。因此,每个级别都有:box_id
,:level_value
和:created_at
个时间戳。我想在line_chart中绘制这些值,其中y轴具有所有框的:created_at
值,x轴具有级别。随着时间的推移将会有8个系列的水平值。
我正在使用Chartkick宝石,但我没有得到正确的图表。 我的控制器是这样的:
def chart
@levels = Level.all
end
我试图在我看来这样做:
<%= line_chart @levels.group(:box_id).group(:created_at).count %>
但我得到了这个:
问题似乎是count()方法,但如果没有这种方法,我找不到办法。
答案 0 :(得分:0)
我通过将姓名和日期传递给line_chart来找到答案。
这是控制器上的操作:
def get_all_tanks_graph
@hash = {}
@array = Array.new
@levels = Level.get_all_tanks_levels
@levels.each do |l|
l.each do |i|
@hash[i.created_at] = i.level
end
@array << @hash
@hash = Hash.new
end
render json: @array.each_with_index.map {
|a, index| {
name: "Caixa #{index + 1}", data: a
}
}
end
这是调用此操作的助手。
line_chart get_all_tanks_graph_path