将相同的元素组合在一起,如果找不到则附加默认值

时间:2011-06-21 03:07:47

标签: ruby-on-rails

感谢您花时间阅读我的问题。

为了计算,我正在提取信息:

...collect{|x| [x.calc_year,x.calc_month, x.amount]

现在我希望能够将所有2010,2011值放在不同的数组中,以便我可以轻松获取这几个月的值。

例如年[“2011”] [1]或年[“2010”] [0] ..

我的第二个问题是,假设我在第5个月没有任何信息,我希望能够输入0金额并输入第5个月的详细信息。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用group_by

@information.group_by(&:calc_year).each do |year, calcs_for_year|

对于第二个问题,你可以循环并首先编写自去年以来所有年份的空白。

@information.group_by(&:calc_year).each do |year, this_years_info|

    unless previous_year.nil? # first time ignore

      (year - previous_year - 1).times do |i| 
          blank_year = previous_year + i
          # render your empty year figures/form
      end

    end

    # render year figures/form

    previous_year = year
end