NoMethodError для time_zone_select в форме - PullRequest
3 голосов
/ 12 июня 2010

Я настроил свое приложение точно в соответствии с Railscasts Time Zone Episode 1 , но когда я запускаю

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

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

NoMethodError в пользователях # new

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

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

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

Ответы [ 4 ]

0 голосов
/ 19 сентября 2010

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

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

У меня точно такая же проблема. Похоже, это связано с 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 голосов
/ 24 июля 2010

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

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

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

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

Вам понадобится миграция с чем-то вроде:

add_column :users, :time_zone, :string

тогда

rake db:migrate
...