2009-09-16 62 views
0

我则params的姓名和价值观像这样的列表:从参数*名称*中提取值?

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| 

如何提取来自param名称的日期(这可能吗?!)?

更新:

虽然我还是不知道该怎么办Eimantas的回答,我可以澄清PARAMS我的形式发送:

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哈希的rate部分里面,但Rails没有把它们放在那里。

更新2:

我想知道如果你能看到我的费率表,那么它可能会帮助指甲这对我来说(防止你的无奈!)。我试图允许客户在我看来的30个箱子中放置30个值(在本例中为9月的每天一个),并且在我的控制器中,在他们点击保存后,让它保存30条记录。

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株系

+0

所以在您的控制器是什么PARAMS [:率]返回? – 2009-09-16 15:19:39

+0

正在运行logger.debug params [:rate]返回“year2009product_type_id1”。我的新建/编辑视图包含一个年份选择字段,一个产品类型选择字段和30个日期文本字段,我试图用它们来创建30个速率记录。日期字段被命名为'date_2009-09-16'等,这就是为什么我想用下划线分隔参数以创建记录的两个属性。 – Gav 2009-09-16 15:27:48

回答

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

对不起,如果我愚蠢,但我如何创建'哈希'? – Gav 2009-09-16 14:34:53

+0

散列只包含与date_匹配的参数中的键。例如:hash = params.select {| k,v | k〜= /^date_.*/}。现在,你为什么有这些怪异的命名参数是另一个问题;) – hgmnz 2009-09-16 15:26:09

+0

谢谢hgimenez。奇怪的命名参数的原因是,我试图一次创建和更新多个记录。我观看了Ryan Bates的Railscasts - 第52集(通过复选框更新)并尝试实现类似功能,但是使用文本字段而不是复选框。我试图解决的问题是每个领域都应该有一个价格,特定的日期;但像所有表单字段的文本字段只允许名称=值对! (这有助于你理解我的疯狂吗?!:-)) – Gav 2009-09-16 15:34:05