3

我已经完全按照Railscasts 时区第 1 集设置了我的应用程序,但是当我运行时

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

我收到这个错误

用户中的 NoMethodError#new

显示第 27 行引发的 app/views/users/new.html.erb:

当你没想到时,你有一个 nil 对象!您可能期望有一个 Array 的实例。评估 nil 时发生错误。<=>

第 27 行是上述行。我真的被困在这个...

4

4 回答 4

0

你有一个名为 time_zone 的模型的数据库字段吗?它被命名为时区吗?

您需要使用以下内容进行迁移:

add_column :users, :time_zone, :string

然后

rake db:migrate
于 2010-06-12T06:28:44.607 回答
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

于 2010-07-01T11:11:12.730 回答
0

是的,这是 2.3.8 中的错误,已在上述票证中修复。

这可能是由于数据库字段中存储的时区与 Rails 或 TZInfo 知道的任何时区都不对应造成的。在我们的例子中,它被意外的 HTML 编码 & 符号绊倒了,所以Pacific Time (US & Canada)变成了Pacific Time (US &amp; Canada). http://github.com/rails/rails/commit/78e4d88c7071c633ee1eb68f49b90719aa198eaa应该可以解决它,但您可能需要返回并确保您的数据库中没有任何不良数据。

于 2010-07-23T20:33:34.023 回答
0

我遇到了同样的问题,这导致我的一个 Cucumber 测试失败。我升级到 Rails 2.3.9(从 2.3.8)并且所有测试都通过了。祝你好运!

于 2010-09-18T22:20:55.647 回答