在模型编辑表单中格式化日期不同?

时间:2012-09-24 18:23:51

标签: ruby-on-rails ruby ruby-on-rails-3.2

我的某个模特中有一个日期栏

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

当我创建一个Job然后尝试编辑它时,日期没有按照我在表单中的方式进行格式化。我想看到的是“2012年9月27日”。我实际看到的是:

enter image description here

我发现this question意味着我可以更改初始值设定项中的默认日期格式。在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。

2 个答案:

答案 0 :(得分:0)

使用时间而不是日期:

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

您也可以使用

@job.due_date.to_s(:default)

强制显示日期格式。

答案 1 :(得分: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 %>