1

モデルの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"}

イニシャライザを作成してからサーバーを再起動しました。

私は何が間違っているのですか?Rails3.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 に答える