使用Ruby on Rails的Chartkick渲染一个包含多个系列的line_chart

时间:2017-04-09 20:28:27

标签: ruby-on-rails linechart chartkick

我有一个模型级别,每次定义时,它会记录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 %>

但我得到了这个:

enter image description here

问题似乎是count()方法,但如果没有这种方法,我找不到办法。

1 个答案:

答案 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