Chartkick / Rails:使用来自对象而不是模型

时间:2017-03-03 22:57:12

标签: ruby-on-rails chartkick

我尝试使用从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"}]

1 个答案:

答案 0 :(得分:0)

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

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

只需将@data作为参数传递给line_chart,图表就会被正确地绘制出来。