тег date_select при обновлении с 2.1.2 до 2.3.8 - PullRequest
0 голосов
/ 12 июля 2010

Мы сейчас находимся в процессе обновления нашей версии rails, и я столкнулся с какой-то странной ошибкой в ​​одном из моих тегов date_select.

Вот виновник:

    <%= date_select :consultant_assignment, :start_date, :order => [:day, :month, :year], 
:start_year => 5.years.ago.year, :end_year => 5.years.from_now.year, :use_short_month => true %>

Это выдает ошибку вроде этого:

NoMethodError в профилях # show

Отображение приложения /views / people / _upcoming_assignments.html.erb, где поднята строка # 46:

У вас есть нулевой объект, когда вы его не ожидали!Возможно, вы ожидали экземпляр Array.Произошла ошибка при оценке nil.size

Извлеченный источник (около строки # 46):

43:           <label for="consultant_assignment_start_date"><%= _('Start') %>:</label>
44:           <% debugger %>
45:           
46:           <%= date_select :consultant_assignment, :start_date, :order => [:day, :month, :year], :start_year => 5.years.ago.year, :end_year => 5.years.from_now.year, :use_short_month => true %>
47:           
48:           
49:           

Я попытался отследить эту проблему, и кажется, что ошибка генерируется при установкев опции: month в массиве: order.Поэтому, когда я делаю: order => [: day,: year], страница загружается идеально.

Я искал точную проблему, но, будучи скорее разработчиком интерфейса, я не уверен, как действовать дальше.с этим.Это ошибка по моему коду?Или это устаревший метод?

Вот application trace:

/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:746:in `_unmemoized_month_names'
/opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/memoizable.rb:72:in `month_names'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:781:in `month_name'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:708:in `select_month'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:705:in `upto'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:705:in `select_month'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:898:in `send'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:898:in `build_selects_from_types'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:896:in `each'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:896:in `build_selects_from_types'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:646:in `select_date'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:920:in `to_date_select_tag_without_error_wrapping'

Я погуглил нематериальные названия месяцев, но нашел nada.

Ладно, я пытался убрать целую оговорку: заказ, чтобы заставить эту чертову штуку работать.На этот раз это не выдает ошибку, но тег не появляется!Я попытался проверить в irb, и, по-видимому, мой тег date_select не возвращает никаких выбранных тегов, а просто набор скрытых тегов!

Я попробовал это с примером rails по умолчанию:

date_select("post", "written_on")

irbвозвращает это:

=> "\ n \ n \ n"

, как вы можете видеть, нигде нет тега выбора.Я пробовал datetime_select и вижу там тег выбора.Так в чем же дело с датой выбора 2.3.8?

Ответы [ 2 ]

0 голосов
/ 26 июля 2010

Кажется, это проблема с i18n, так как rails не может видеть названия месяцев, объявленные по какой-то причине (он ДОЛЖЕН это видеть, поскольку по умолчанию используется значение en).На самом деле по какой-то причине он не видит язык по умолчанию.В любом случае, нашим быстрым решением было добавить константу MONTH_NAMES в constants.rb и добавить ее к опциям в date_select.

0 голосов
/ 12 июля 2010

использовать эти форматы

date_select (имя_объекта, метод, options = {}, html_options = {})

положить start_year, end_year, order_field и т. Д. В опцияхtag.

Я думаю, что это может вам помочь.

Выборки подготовлены для многопараметрического присвоения объекту Active Record.

Примечание. Если день не включенв качестве опции, но месяц будет, день будет установлен на 1, чтобы гарантировать, что все выборы месяца действительны.

...