【问题标题】:Chartkick with Ruby on Rails to render a line_chart with multiple seriesChartkick 与 Ruby on Rails 渲染具有多个系列的 line_chart
【发布时间】:2017-04-09 20:28:26
【问题描述】:

我有一个模型级别,每次定义时都会记录一次来自 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()方法上,但是没有这个方法我没找到办法。

【问题讨论】:

    标签: ruby-on-rails linechart chartkick


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 2019-07-13
      • 2013-06-24
      • 2010-11-10
      • 2017-05-07
      • 1970-01-01
      相关资源
      最近更新 更多