Установить дату в рельсы text_field 3.2.1 - PullRequest
1 голос
/ 09 марта 2012

Я только что обновился до rails 3.2.1.

Я использую указатель даты jQuery UI для установки дат в rails text_fields.Поле устанавливает столбец даты в базе данных.

Но теперь это не работает.

У меня есть этот код в представлении.

<%= p.text_field :due, :value => Time.now.strftime("%m/%d/%Y"), :id => "dialog_project_date" %>

Если я наденуНе меняйте дату, все идет хорошо.Если я изменю дату, Rails поместит nil в базу данных.Это также происходит, когда я отключаю jQuery datepicker и ввожу дату (в правильном формате) вручную.

Мне кажется, что-то с тем, как rails обрабатывает форматирование поля даты.

Я не могу найти решение.У кого-нибудь есть идея?

Обновление

Я использовал отладчик в действии create.Вот результат:

 (rdb:22) params
 {"utf8"=>"✓", "authenticity_token"=>"4IChBeyKzkc4dwzje1RMPy2GBTMs5m2zrBPBFbIIKJw=",         "project"=>{"name"=>"gunnaer", "description"=>"", "due"=>"03/17/2012", "customer_id"=>""},     "commit"=>"Save", "controller"=>"projects", "action"=>"create_index"}
 (rdb:22) @project
 #<Project id: nil, name: "gunnaer", description: "", due: nil, active: true, budget:   nil, hour_price: nil, firm_id: 1, customer_id: nil, created_at: nil, updated_at: nil>
 (rdb:22) @project.due = "03/17/2012"
 "03/17/2012"
 (rdb:22) @project
 #<Project id: nil, name: "gunnaer", description: "", due: nil, active: true, budget:  nil, hour_price: nil, firm_id: 1, customer_id: nil, created_at: nil, updated_at: nil>

Параметры верны, но обязательный параметр не устанавливается в переменную instans.Формат такой же, когда я не меняю дату.Когда я не изменяю это, это работает.Странно ..

Ответы [ 2 ]

2 голосов
/ 09 марта 2012

Ваш формат даты неправильный. Попробуйте использовать "гггг / мм / дд"

Это работает:

ruby-1.9.2-p290 :002 > b = Blog.first
 => #<Blog id: 1, title: "Something", created_at: "2012-03-09 13:38:23", updated_at: "2012-03-09 13:38:32"> 
ruby-1.9.2-p290 :003 > b.created_at
 => Fri, 09 Mar 2012 13:38:23 UTC +00:00 
ruby-1.9.2-p290 :004 > b.created_at = "2012/03/17"
 => "2012/03/17" 
ruby-1.9.2-p290 :005 > b.save
 => true 
ruby-1.9.2-p290 :006 > Blog.first
 => #<Blog id: 1, title: "Something", created_at: "2012-03-17 00:00:00", updated_at: "2012-03-09 13:58:55"> 

Это не:

ruby-1.9.2-p290 :007 > b.created_at = "03/17/2012"
 => "03/17/2012" 
ruby-1.9.2-p290 :008 > b.save
 => true 
ruby-1.9.2-p290 :009 > Blog.first
 => #<Blog id: 1, title: "Something", created_at: nil, updated_at: "2012-03-09 13:59:22"> 

EDIT

У вас есть несколько вариантов формата даты, которые вы должны указать в своем коде пользовательского интерфейса jquery. Смотрите эту ссылку для примеров - http://jqueryui.com/demos/datepicker/date-formats.html

0 голосов
/ 09 марта 2012

Для отладки сначала посмотрите, какие значения отправляются на ваш контроллер. Либо проверьте журнал, либо используйте отладочный прокси, например, fiddle.

Затем используйте консоль Rails, чтобы определить, где происходит проблема.

ОБНОВЛЕНО

Проблема в том, что последняя версия Ruby (не Rails) предполагает европейские форматы дат. Обходной путь для использования формата США

...