我的某个模特中有一个日期栏
create_table "jobs", :force => true do |t|
t.date "due_date"
end
当我创建一个Job然后尝试编辑它时,日期没有按照我在表单中的方式进行格式化。我想看到的是“2012年9月27日”。我实际看到的是:
我发现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。
答案 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 %>