2

我有一个 Rails 4 应用程序,用于收集教堂服务的出席情况。有些星期有两种服务,有些星期只有一种。我需要获取每周的总出勤率并将其显示为图表。

通过调用:

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 人}

所以我想弄清楚如何将第一种形式转换为第二种形式。

我确信这很容易,但我有限的 Rails 知识正在碰壁。

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 回答