2

教会の礼拝への出席を収集するRails 4アプリケーションがあります。2 つのサービスがある週もあれば、1 つだけの週もあります。毎週の総出席を取得し、グラフとして表示する必要があります。

次のように呼び出します。

Stat.calculate(:sum, :attendance, group: :date)

コンソールでは、次のようなハッシュでデータを収集できました。

{日、2013 年 1 月 6 日 =>66、日、2013 年 1 月 13 日 =>65、日、2013 年 1 月 20 日 =>60、日、2013 年 1 月 27 日 =>67、日、2013 年 2 月 3 日 =>60、日、2 月 10 日2013=>76、2013 年 2 月 17 日(日)=>65、2013 年 2 月 24 日(日)=>52、2013 年 3 月 3 日(日)=>52、2013 年 3 月 10 日(日)=>45、2013 年 3 月 17 日(日)=>56、 2013 年 3 月 24 日 (日)=>134、2013 年 3 月 31 日 (日)=>76、2013 年 4 月 7 日 (日)=>88、2013 年 4 月 14 日 (日)=>87、2013 年 4 月 28 日 (日)=>93、2013 年 5 月 5 日 (日) =>93、2013 年 5 月 12 日(日)=>95、2013 年 5 月 19 日(日)=>90、2013 年 5 月 26 日(日)=>87、2013 年 6 月 2 日(日)=>71、2013 年 6 月 9 日(日)=>86、日, 2013 年 6 月 16 日 =>109, 2013 年 6 月 23 日 (日)=>80, 2013 年 6 月 30 日 (日)=>68, 2013 年 7 月 7 日 (日)=>75, 2013 年 7 月 14 日 (日)=>73}

しかし、チャートに必要なのは、次の形式のハッシュの配列です。

{日付: "2013 年 6 月 23 日 (日)"、出席: 80}、{日付: "2013 年 6 月 30 日 (日)"、出席: 68"}

したがって、最初のフォームを2番目のフォームに変換する方法を見つけようとしています。

とても簡単なことだと思いますが、レールに関する限られた知識が壁にぶつかっています。

4

2 に答える 2

5
.collect{|key,value| {:date => key, :attendance => value} }

元のキーが日付の値になり、元の値が出席の値になる新しいハッシュをループして作成します。これらの新しいハッシュは配列に集められます。

于 2013-07-20T20:38:16.773 に答える
2

以下のように考えることができます。

h = {"Sun, 06 Jan 2013"=>66, "Sun, 13 Jan 2013"=>65, "Sun, 20 Jan 2013"=>60 }
h.map{|k,v| Hash[:date,k,:attend,v]}
# => [{:date=>"Sun, 06 Jan 2013", :attend=>66},
#     {:date=>"Sun, 13 Jan 2013", :attend=>65},
#     {:date=>"Sun, 20 Jan 2013", :attend=>60}]
于 2013-07-20T20:30:31.340 に答える