【问题标题】:Rails DATE_FORMATS initializers causing errorRails DATE_FORMATS 初始化程序导致错误
【发布时间】:2011-09-17 11:28:10
【问题描述】:

我正在尝试使用一种广泛报道的技术。我想添加一个站点范围的自定义日期格式,为此,我在config/initializers/date_formats.rb 中添加了以下几行:

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
  :verbose => lambda { |time| time.strftime(
                       "%a, %b #{time.day.ordinalize}, %Y %I:%M %p") 
                     }
)

请注意,这是该文件的全部内容。但是在初始化时,我得到了这个错误:

/whatever/config/initializers/date_formats.rb:4:in `<top (required)>': uninitialized constant ActiveSupport::CoreExtensions (NameError)

我遗漏了哪些细节?

【问题讨论】:

  • 你能指出一个成功使用这种技术的链接吗?

标签: ruby-on-rails ruby-on-rails-3 initializer


【解决方案1】:

在 Rails 3 中你可以使用

Time::DATE_FORMATS.merge!(...)

而不是 Rails 2 格式的:

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(...)

【讨论】:

  • 谢谢!那很有帮助。作为后续行动:如果 my_date 为 nil,则执行类似 my_date.to_formatted_s(:verbose) 之类的操作。所以我最终会做 mydate.nil? "" : mydate.to_formatted_s(:verbose)。这似乎是错误的,不是吗?
  • 首先,您可以只使用.to_s(:verbose) 而不是to_formatted_s。至于nil 日期/时间,NilClass 在 Nil 上没有 to_formatted_s。您可以向 NilClass 添加一个方法,例如:def to_s(format); ""; end 以允许 nil.to_s(:verbose) 返回 ""
  • 你也可以mydate.try(:to_s, :verbose) || ""
  • 很好.. 我喜欢try or die 方法:)
猜你喜欢
  • 2012-01-21
  • 1970-01-01
  • 2013-07-26
  • 2015-08-11
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多