我可以使用以下初始化程序让Rails显示mm / dd / yyyy:
date_format.rb
Date::DATE_FORMATS[:default]="%m/%d/%Y"
或l18n使用this answer
但这不会改变提交日期的方式。提交时:
10/02/2014
将被解析为
@entry.photo_date
Mon, 10 Feb 2014
我正在寻找一种以mm / dd / yyyy格式提交日期的方法。
我希望能够集中进行此操作,因此我不必在整个应用程序中重复代码
答案 0 :(得分:3)
在现代红宝石中(例如prepend
),您可以在Rails前面插入自己的类型转换。您希望以您正在使用的其他日期/时间格式执行此操作。这是Date
的代码,只需将其粘贴到config/initializers/typecasts.rb
或某处:
module Typecasting
module Date
def cast_value v
::Date.strptime v, "%m/%d/%Y" rescue super
end
end
::ActiveRecord::Type::Date.prepend Date
end
Rails将尝试使用美式格式,如果不起作用,则可以使用内置方法。
答案 1 :(得分:2)
试试这个:
irb(main):001:0> today = Date.today
=> Tue, 06 Jan 2015
irb(main):003:0> today.strftime("%m/%d/%Y")
=> "01/06/2015"
因此,在您的情况下,@entry.photo_date.strftime("%m/%d/%Y")
应该有效。