尝试显示时间时出现 NoMethodError
a NoMethodError when trying to display time
我在使用 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
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
我在使用 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
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