2016-03-28 10 views
0

は私が返す変換グループ化されたstrftimeの時間が

<%= ItemSale.pluck(:item_id).uniq.map{|item_id| { 
name: Item.find(item_id).name, 
data: @item_sales.where(item_id: item_id).group_by_day(:date_sold, 
format: "%s").count.to_a}}.to_json %> 

このコード(私はhighchart JSのためのJSONデータとして渡すつもりだ)している整数へ:

[{"name":"Computer","data":[["1456790400",2],["1456876800",0],["1456963200",1]]},{"name":"Android Phones","data":[["1456876800",3],["1456963200",0],["1457049600",1],["1457136000",0],["1457222400",0],["1457308800",2]]}] 

をしかし、私はこれを必要とします:

["1457049600",1] 

整数であり、かつ、このような1000に掛け:

[1457049600000,1] 

は、私はそれが正しいことを確認するために、サンプルデータをやってみました、それが働いている:

@item_sales_series = [{"name":"Computer","data":[[1456790400000,2],[1456876800000,0],[1456963200000,1]]},{"name":"Android Phones","data":[[1456876800000,3],[1456963200000,0],[1457049600000,1],[1457136000000,0],[1457222400000,0],[1457308800000,2]]}].to_json 

ことが可能ですまたは出力整数の代わりに

group_by_day(:date_sold, format: "%s").count.to_a 

への道があります文字列に1000を掛けます。

グループの日付の宝箱を使用してデータを日付でグループ化します。また、私はこのプロジェクトにHighchartの宝石を使用していない、私はグラフにデータを挿入する別のアプローチを試みている。

答えて

2
>> array = [{"name":"Computer","data":[["1456790400",2],["1456876800",0],["1456963200",1]]},{"name":"Android Phones","data":[["1456876800",3],["1456963200",0],["1457049600",1],["1457136000",0],["1457222400",0],["1457308800",2]]}] 

>> array.map{|hash| hash.merge(data: hash[:data].map{|str, int| [str.to_i*1000, int]})} 
=> [{:name=>"Computer", :data=>[[1456790400000, 2], [1456876800000, 0], [1456963200000, 1]]}, {:name=>"Android Phones", :data=>[[1456876800000, 3], [1456963200000, 0], [1457049600000, 1], [1457136000000, 0], [1457222400000, 0], [1457308800000, 2]]}] 

これは以下のように動作します:

#  ,-- Loop over every element of the top-level array and change it's value 
#  |     ,-- For each hash, change only the element called "data" 
#  |     |      ,-- In the "data" array, change every element 
#  |     |      |     ,-- Change the string to an integer and multiply by 1000 
#  |     |      |     | 
#  v     v      v     v 
>> array.map{|hash| hash.merge(data: hash[:data].map{|str, int| [str.to_i*1000, int]})} 
+0

あなたの命の恩人!ありがとう!私は試して、それは動作します! :) –

関連する問題