0

我试图在下面的哈希 @data 中创建一个动态循环,但似乎无法弄清楚。我正在使用 google api 从这里https://github.com/mcommons/annotatedtimeline-for-rails创建一个 annotatedtimeline-for-rails 。

散列 @data 中的数组必须是动态的,即天数必须由循环生成,产品名称和编号也是动态的。我将尝试在下面的循环中举一个例子

@numdeployed 是一个数字,来自数据库中的一个表,我应该由循环生成

@data{
    begin loop
    i.day.ago.to_date => { :foo=>@numdeployed, :bar=>@numdeployed, :barbaz=>@numdeployed, :foobar=>@numdeployed },
    end loop
}

原始数据哈希看起来像这样

@data = {
    1.day.ago.to_date => { :foo=>10, :bar=>40, :barbaz=>10, :foobar=>40 },
    2.day.ago.to_date => { :foo=>10, :bar=>40, :barbaz=>10,:foobar=>40 },
    3.day.ago.to_date => { :foo=>10, :bar=>40, :barbaz=>10,:foobar=>40 },
    4.day.ago.to_date => { :foo=>10, :bar=>40, :barbaz=>10,:foobar=>40 },
    5.day.ago.to_date => { :foo=>10, :bar=>40, :barbaz=>10,:foobar=>40 }
}

希望有人可以提供帮助。谢谢

4

1 回答 1

3

你在寻找这样的东西吗?

@data = Hash[
    n.times.map do |i|
        [ (i + 1).day.ago.to_date,  { :foo => 10, :bar => 40, :barbaz => 10, :foobar => 40 } ]
    end
]

n不管你想要多少对在你的@data.

于 2012-08-05T00:56:42.273 回答