2013-10-04 1 views
0

У меня есть хэш, как это:Как изменить хэширование datetime в 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

Ugh. Я бы настоятельно рекомендовал НЕ использовать '' ✓ '' для вашего флага, является ли это 'utf8'. Используйте логическое 'true' /' false' или, по крайней мере, используйте nil/not-nil. Ваша логика для тестирования будет более чистой: 'if hash ['utf8']' vs. 'if 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

Да, в моей форме я только показываю start_at на date_select. Я изменил день как 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 отправляются во Время . Теперь, если я не пытаюсь это сделать, контроллер работает правильно, и он сохраняет start_at (3i) с 12 –

Смежные вопросы