2013-10-04 43 views
0

我有這樣一個哈希:如何在Rails中修改日期時間散列?

{"utf8"=>"✓", 
"authenticity_token"=>"yYl/Nts0KRktqjR5K7vYXf1jrOyRJmQOtaF7lPMIeZQ=", 
"meeting"=>{"name"=>"Robsbaun", 
"start_at(3i)"=>"4", 
"start_at(2i)"=>"10", 
"start_at(1i)"=>"2013", 
"start_at(4i)"=>"11", 
"start_at(5i)"=>"15", 
"end_at(1i)"=>"2013", 
"end_at(2i)"=>"10", 
"end_at(3i)"=>"4", 
"end_at(4i)"=>"19", 
"end_at(5i)"=>"15", 
"room_id"=>"1", 
"user_id"=>"2"}, 
"commit"=>"Submit"} 

我想爲這兩個end_at(2i)start_at(2i)end_at(3i)start_at(3i)設置相同的值。

如何在Ruby 2.0和Rails 4中做到這一點?

我已經嘗試過類似:

meeting_params[":end_at(3i)"] = meeting_params[":start_at(3i)"] 

但它不工作。

在此先感謝。

+0

呃。我強烈建議不要爲你的標誌使用'「✓」'不管它是否是'utf8'。使用布爾型'true' /'false',或者至少使用nil/not-nil。您的測試邏輯將更清晰:'如果hash ['utf8']'與'如果hash ['utf8'] ==「✓」'一致,並且它會使其與各種ORM,DBM和數據庫模式更兼容,它已經理解了true/false或者nil/not-nil映射到標準的「is」/「不是」數據庫中的條件測試。 –

+0

我不知道如何改變......但是,謝謝你的提示 –

回答

0

直接更改值應該工作,它只是一個散列。雖然你的語法並不完全正確。假設它有作爲params

params['meeting']['end_at(3i)'] = params['meeting']['start_at(3i)'] 

你試圖符號和字符串相結合 - 只是堅持一方或另一方。

+0

不工作,end_at不會改變... –

+0

只是要完全確定......'end_at(3i)'和' start_at(3i)'在你發佈的哈希中是一樣的,你有沒有試過這個哈希值,這些值是不同的? – Matt

+0

是的,在我的表單中,我只在date_select上顯示start_at。我改變了12(start_at(3i)= 12),end_at得到Time.now,(所以end_at(3i)將等於4)。在我的控制器中,我執行: params ['meeting'] ['end_at(3i)'] = params ['meeting'] ['start_at(3i)'] 但由於某種原因,end_at和start_at都是Time 。現在,如果我不嘗試這樣做,控制器工作正常,它將start_at(3i)與12保存在一起 –