2010-06-12 2 views
3

я настроил мое приложение точно в соответствии с Railscasts Time Zone Episode 1, но когда я бегуNoMethodError для time_zone_select в форме

<%= f.time_zone_select :time_zone, ActiveSupport::TimeZone.us_zones %> 

Я получаю эту ошибку

NoMethodError пользователей # новых

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

Вы если у вас нет , ожидайте! Возможно, вы ожидали экземпляр массива . Произошла ошибка при оценке nil. < =>

С линией 27, являющейся вышеупомянутой линией. Я действительно застрял на этом ...

+0

Вы можете проверить, что 'ActiveSupport :: TimeZone.us_zones' дает в консоли? – Eimantas

+0

[# JackCA

ответ

0

У меня точно такая же проблема. Это похоже на Rails 2.3.8, потому что, если я вернусь к своей предыдущей версии (2.3.4, установив это в /config/environment.rb), все будет хорошо. Похож на ошибку. Я проверяю, разрешит ли этот отчет об ошибке и итоговый патч решить эту проблему: https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/4942-activesupporttimezone-incorrectly-stores-bogus-values-in-zones_map#ticket-4942.

+0

Я действительно думаю, что это тоже ошибка. Я действительно даже не могу вспомнить, что я сделал, чтобы исправить это, но в конце концов. Я работал с базами данных с местным посевом, поэтому в итоге я сбросил, создал и перенести его. Я не уверен, что так оно и было, но стоит попробовать, если вы можете себе это позволить. – JackCA

0

У вас есть поле базы данных для этой модели с именем time_zone? вместо этого он назвал часовой пояс?

Вы должны были бы миграцию с чем-то вроде:

add_column :users, :time_zone, :string 

затем

rake db:migrate 
+0

Да, они уже есть и заполнены данными семян. – JackCA

+0

Что-нибудь еще это может быть? Я пробовал все – JackCA

+0

Я столкнулся с проблемой здесь из-за орфографической ошибки между базой данных/миграцией и представлением, поэтому проверьте наличие опечаток, если это не очевидно. Можете ли вы включить трассировку стека? –

0

Да, это ошибка в 2.3.8, и она исправлена ​​в вышеупомянутом билете.

Возможно, это вызвано сохраненным часовым поясом в поле базы данных, которое не соответствует ни одному часовому поясу, о котором знали Rails или TZInfo. В нашем случае это было сработано случайно HTML-кодированием амперсандов, так что Pacific Time (US & Canada) стал Pacific Time (US &amp; Canada). http://github.com/rails/rails/commit/78e4d88c7071c633ee1eb68f49b90719aa198eaa должен решить эту проблему, но вы можете вернуться назад и убедиться, что у вас все еще нет плохих данных в вашей БД.

0

У меня была такая же проблема, из-за которой один из моих тестов на огурцы терпел неудачу. Я обновился до Rails 2.3.9 (из 2.3.8) и все тесты прошли. Удачи!

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