2012-06-04 4 views
1

Я изучаю рельсы и недавно столкнулся с дорожным блоком. Любые рекомендации приветствуются.Rails Date Params

Я использую устройство и столбец DateTime :confirmed_at в качестве защищенного атрибута. Таким образом, чтобы обновить его из моего интерфейса администратора я супер метод обновления контроллера и добавить:

 @user.update_attribute(:confirmed_at, params[:user][:confirmed_at]) 
     @user.update_attribute(:school_id, params[:user][:school_id]) 

:school_id получает обновление правильно, но :confirmed_at, что даты и времени, всегда равна нулю. Я посмотрел на Params хэш и достаточно уверен, что это не имеет :confirmed_at, но она имеет

 "confirmed_at(1i)"=>"2012", 
     "confirmed_at(2i)"=>"6", 
     "confirmed_at(3i)"=>"2", 
     "confirmed_at(4i)"=>"04", 
     "confirmed_at(5i)"=>"11" 

Rails, кажется, не переводить параметры полей в даты и времени для объектов базы данных.

** Как взять это значение для правильного обновления поля :confirmed_at?

Любая помощь приветствуется.

Rails 3.1, Ruby 1.9

ответ

1

Я думаю, вы используете datetime_select помощника.

Проверьте это: Where is the Rails method that converts data from `datetime_select` into a DateTime object?

+0

Спасибо, Алексей. Я не уверен, что обработка преобразования вручную подходит. Исправьте меня, если я ошибаюсь, но, похоже, мне кажется, что я должен получить параметры отдельно и вручную? – Yuri

1

Попробуйте это:

@user.update_attribute(:confirmed_at, params[:confirmed_at]) 

date_select отправляются в своем Params, а не как часть Params [: пользователь] хэш.

Надеюсь, это поможет.

+0

Не совсем так. До сих пор уродливым решением было добавление полей в текстовое поле и просто введите дату в 12/12/12. – Yuri

+0

Спасибо Анил. Я думал, что это сработает, потому что это имеет смысл, и я не пробовал его, прежде чем читать ваш комментарий. – Yuri

+0

@Yuri Итак, каково ваше окончательное решение? – Anil