1

我的一个模型中有一个日期列

  create_table "jobs", :force => true do |t|
    t.date     "due_date"
  end

当我创建一个工作然后尝试编辑它时,日期的格式不是我想要的格式。我想看到的是“2012 年 9 月 27 日”。我实际看到的是:

在此处输入图像描述

我发现这个问题意味着我可以在初始化程序中更改默认日期格式。在config/initializers/date_time_formats.rb我有:

Date::DATE_FORMATS[:default] = "%d %B %Y"
Date::DATE_FORMATS[:db] = "%d %B %Y"

当我运行 rails 控制台并检查 Date::DATE_FORMATS 哈希时,我看到了这个(看起来正确):

{:short=>"%e %b", :long=>"%B %e, %Y", :db=>"%d %B %Y", :number=>"%Y%m%d", :long_ordinal=>#<Proc:0x007fce4509f9c8@/Users/davidtuite/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.7/lib/active_support/core_ext/date/conversions.rb:12 (lambda)>, :rfc822=>"%e %b %Y", :default=>"%d %B %Y"}

自从制作初始化程序以来,我已经重新启动了我的服务器。

我究竟做错了什么?我正在使用 Rails 3.2.7。

4

2 回答 2

0

使用时间而不是日期:

Time::DATE_FORMATS[:default] = "%d %B %Y"
Time::DATE_FORMATS[:db] = "%d %B %Y"

你也可以使用

@job.due_date.to_s(:default)

强制显示日期格式。

于 2012-09-24T18:36:53.543 回答
0

我似乎可以让它工作的唯一方法是伪造form_for输入格式并更改默认日期格式。

# config/initializers/date_time_format.rb
Date::DATE_FORMATS[:default] = "%d %B %Y"

# jobs/edit.html.erb
<%= form_for @job do |f| %>
  <%= text_field_tag 'job[due_date]', f.object.due_date %>
<% end %>
于 2012-09-25T00:02:45.357 回答