Chartkick 在 Rails 上使用 Ruby 渲染具有多个系列的 line_chart

Chartkick with Ruby on Rails to render a line_chart with multiple series

我有一个模型级别,每次定义时都会记录一次来自 8 个不同水箱的级别值。因此,每个级别都有一个 :box_id、一个 :level_value 和一个 :created_at 时间戳。我想在 line_chart 中绘制这些值,其中 y 轴具有所有框的 :created_at 值,x 轴具有水平。将有 8 个系列的级别值随时间注册。

我正在使用 Chartkick gem 但我没有得到正确的图表。 我的控制器是这样的:

def chart
    @levels = Level.all
end

我正在尝试这样做:

<%= line_chart @levels.group(:box_id).group(:created_at).count %>

但我得到这个:

好像是count()方法的问题,但是我没有找到没有这个方法的方法。

我通过将名称和日期传递给 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