我对rails有一个独特的问题。我目前正在尝试运行此代码..
<%= trip.start_date.strftime("%b %d %I:%M %p") %>
当我将框架时区设置为UTC时,它将正确输出start_date。但是,当我将时区更改为EST / EDT时,它会给出NoMethodError for nil:NilClass
错误。
当我检查数据库中的行程时,它正确地存储start_date
的时间,但似乎不想格式化或显示它。
希望有道理,谢谢!
编辑: 另外,在application.rb我写的
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = 'Eastern Time (US & Canada)'
然后,我重置数据库,然后重置服务器。
解决了!谢谢Miler
我将config.active_record.default_timezone = 'Eastern Time (US & Canada)'
更改为config.active_record.default_timezone = :local
答案 0 :(得分:2)
时区应该在 application.rb
中设置如下module Spatravlr
class Application < Rails::Application
# code
config.time_zone = 'Eastern Time (US & Canada)'
end
end
接下来,让我们对nil
个案件进行应用程序控制,以便我们处理错误。
<%= trip.start_date.try(:strftime, "%b %d %I:%M %p") %>
鉴于trip
属性似乎是迭代器的一部分,此修复程序还应该在打印出时间时显示start_date
为nil
。
另外,您不需要:
config.active_record.default_timezone = 'Eastern Time (US & Canada)'
我相信自Rails 3.2以来,它接受:local
或:utc
。因此,您可以设置不声明它(删除行),或者设置如下:
config.active_record.default_timezone = :local