2009-09-16 83 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