我在使用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)'
然后,我重置数据库,然后重置服务器。
解决了!谢谢米勒
我将
config.active_record.default_timezone = 'Eastern Time (US & Canada)'
更改为config.active_record.default_timezone = :local
最佳答案
时区应在 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
关于ruby-on-rails - 尝试显示时间时出现NoMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27884277/