【问题标题】:Chartkick/Rails: Build line_chart using data from an object instead of a ModelChartkick/Rails:使用来自对象而不是模型的数据构建 line_chart
【发布时间】:2017-03-03 22:57:12
【问题描述】:

我正在尝试使用从 API 检索到的数据来绘制一个简单的 line_chart,但文档示例仅使用来自常规 ActiveRecord 模型的数据,而且我很努力。由于我没有对模型进行操作,因此我无法使用文档(组等)中解释的任何方法

我有这个对 REST API 的调用,我得到了一个具有两个属性的对象(还有一些,但我现在感兴趣的是这两个),ORDER_CODE 和 LEAD_TIME。我只想显示一个 line_chart,其中 X 轴为 order_codes,Y 轴为 Lead_times。

我的控制器代码是这样的,我使用 Dish 将 Json.parse 中的哈希转换为对象。 API 调用正在运行,我在我的应用中成功使用了数据。

leadtimes = Dish(JSON.parse RestClient.get(ENV['API'], params: { PART: @order.PART }))

在视图中:

<%= line_chart @data%> 

我正在尝试这个,但我得到了一个空图表:

@data = leadtimes.map do |value|
  [
    order_code: value.ORDER_CODE, lead_time: value.LEAD_TIME
  ]
end

我从 API 得到的 JSON 如下所示:

[{"ORDER_CODE"=>519805, "PART"=>"00049", "LEAD_TIME"=>29, "DATE"=>"2015-03-03T00:00:00"}, {"ORDER_CODE"=>517297, "PART"=>"00149", "LEAD_TIME"=>54, "DATE"=>"2014-11-26T00:00:00"}]

【问题讨论】:

    标签: ruby-on-rails chartkick


    【解决方案1】:

    我终于通过使用 collect 方法对包含在变量提前期中的原始哈希数组使用它来工作,如 OP 中所示。

    @data = leadtimes.collect{|i| [i['ORDER_CODE'], i['lead_time']]}
    

    只需将@data 作为参数传递给 line_chart 即可正确绘制图表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      相关资源
      最近更新 更多