【问题标题】:Rails 3 Date format in formsRails 3表单中的日期格式
【发布时间】:2013-01-25 07:52:24
【问题描述】:

我的问题类似于这个 SO 问题,但它没有回答我的问题:

Rails 3 default datetime format without 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 %>

它会给我正确的格式。

但这个解决方案对我来说似乎很老套。这真的是唯一的方法吗?

【问题讨论】:

  • 您希望输入的内容是什么样的? Rails date_select 帮助器非常灵活,可以自定义,并且可能比文本字段更适合您的需求。

标签: ruby-on-rails-3 date


【解决方案1】:

我不是 100% 确定。但答案很可能是否定的。 rails formhelper 只是为您提供数据库中的任何值。

这里是检索值供您参考的地方:

http://api.rubyonrails.org/classes/ActionView/Helpers/InstanceTag.html#method-i-to_input_field_tag

没有对其进行特殊处理,如localizeto_s,这是应用格式化的地方。

【讨论】:

    【解决方案2】:

    如果日期看起来像 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] %>
    

    【讨论】:

    • 我不确定这是否是他正在寻找的答案。他特别询问如何使用表单生成器获得正确的格式。
    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    相关资源
    最近更新 更多