Rails Chartkick。具有嵌套哈希的多系列折线图

时间:2016-11-20 20:18:57

标签: ruby-on-rails json charts chartkick

尝试做多系列折线图。 (Visualizer是Chartjs。)来自for j in $(ldd target | grep -o '=> .* ' | sed -e 's/=> //' -e '/^ *$/d' ); do out=$(readelf -Wl $j | grep STACK) [[ -z "$out" ]] && echo "missing GNU_STACK in $j" echo $out | grep -q RWE && echo "executable GNU_STACK in $j" done

README

我的数据已经采用JSON格式,但需要一些操作才能正确。原始形式如下所示:

<%= line_chart [
  {name: "Series A", data: series_a},
  {name: "Series B", data: series_b}
] %>

所以,有了 => [{"id"=>30, "runner"=>"Golden State Warriors", "price"=>1.51, "histories"=>[{"price"=>1.51, "created_at"=>"2016-11-19T17:42:18.699Z"}, {"price"=>1.51, "created_at"=>"2016-11-20T07:56:55.662Z"}]}, {"id"=>32, ETC 产生:

markets.map{ |m| [name: m['runner'], data: m['histories'].map{|h| [h['created_at'], 1/h['price']] }]}.flatten!

虽然我没有收到错误,但图表是一个空象限,=> [ {:name=>"Golden State Warriors", :data=>[["2016-11-19T17:42:18.699Z", 0.6622516556291391], ["2016-11-20T07:56:55.662Z", 0.6622516556291391]]}, {:name=>"Los Angeles Clippers", :data=>[["2016-11-19T17:42:18.795Z", 0.1], ["2016-11-20T07:56:55.717Z", 0.1]]}, ETC 为0,0。

图表位于我视图中的[object Object]块中,因为我想创建多个图表,页面显示不同数据的相同内容。我玩了@markets.each,我可以通过手动输入.each_with_index显示的数据来显示部分图表:

README

其中显示了图表中的前两个系列,但不能正确,因为每个图表都有不同的i元素。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

使用.each方法计算出来。我确信这样做更干净,但它现在正在工作。

def chart(markets)
  chart_data = markets.map{ |m| [name: m['runner'], data: m['histories'].map{|h| [h['created_at'], 1/h['price']]}]}.flatten
  line_chart chart_data.each do |m| 
    [{name: [:name], data: [:data]}]
  end
end