我的问题类似于这个SO问题,但它没有回答我的问题:
Rails 3 默认日期时间格式,不带 UTC
我明白我可以添加
Time::DATE_FORMATS[:default] = "%Y/%m/%d"
到我的environment.rb
,它会相应地更改我的默认时间格式。
因此,当我这样做Time.now.to_s
时,我会得到正确的格式。
但是,我的问题是,为什么这不适用于form_builder。例如:
<%= f.text_field :date %>
将返回完整的 UTC 时间戳:2013-01-25 07:45:21
我知道我可以做到这一点
<%= f.text_field :date, :value => @post.date.to_s %>
它会给我正确的格式。
但是这个解决方案对我来说似乎很笨拙。这真的是唯一的方法吗?
我不是100%确定。但答案很可能是否定的。rails formhelper只是为您提供数据库中的任何值。
下面是检索值以供参考的位置:
http://api.rubyonrails.org/classes/ActionView/Helpers/InstanceTag.html#method-i-to_input_field_tag
没有特殊的处理,例如 localize
或 to_s
,这是应用格式的地方。
如果日期看起来像一个timestamp
( 2013-01-25 07:45:21 UTC
),
您可以对用于本地化时间戳的视图执行以下操作:
<%= localize(@post.date, :format => :long) %>
根据您的问题,您可以尝试使用date_select
而不是text_field.
<%= f.date_select :date, :order => [:day, :month, :year] %>