从param * name *中提取值?

时间:2009-09-16 13:01:59

标签: ruby-on-rails

我有一个名称和值如下的参数列表:

date_2009-09-16 => ["50.00"]
date_2009-09-17 => ["60.00"]
date_2009-09-18 => ["90.00"]

我想在我的数据库中为每个日期保存一条记录,如下所示:

|id | date       | price|
|1  | 2009-09-16 | 50.00|
|2  | 2009-09-17 | 60.00|
|3  | 2009-09-18 | 90.00|

如何从参数名称中提取日期(这可能吗?!)?

更新

虽然我仍然不确定如何做Eimantas的答案,但我能否澄清我的表格发送的参数:

Parameters: {
"commit"=>"Save",
"method"=>"put",
"controller"=>"rates",
"action"=>"create",
"authenticity_token"=>"A0wP8Dq7cVOM+bLIcdPENzRhg6T1Mwhjqob1UYTk1Jk=",
"date_2009-09-16"=>"50.00",
"date_2009-09-17"=>"60.00",
"date_2009-09-18"=>"90.00",
"rate"=>{"year"=>"2009", "product_type_id"=>"2"}
}

我认为日期应该属于params散列的速率部分,但是Rails不会将它们放在那里。

更新2:

我想知道你是否可以看到我的费率表,那么它可能有助于我(并防止你的挫折!)。我试图允许客户在我的视图中将30个值放入30个框中(在本例中为9月的每一天),并且在我的控制器中,在他们点击“保存”后,将其保存为30个记录。 / p>

id | date       | price | product_type_id |
.. | ..         | ..    | ..              |
16 | 2009-09-16 | 50.00 | 1               |
17 | 2009-09-17 | 60.00 | 1               |
18 | 2009-09-18 | 90.00 | 1               |
.. | ..         | ..    | ..              |

我考虑使用一个隐藏字段来保存日期,并考虑使用一个可见字段来保存价格,但是Rails将如何知道哪个日期与创建操作中的哪个价格相关?对不起,如果这太令人困惑了。

提前致谢!

GAV株系

1 个答案:

答案 0 :(得分:6)

hash.each do |k,v|
  date = k.split('_')[1]
  Entry.create(:date => date, :price => v)
end