2


0

i18nのRails ActiveRecord日付解析(特にヨーロッパの日付形式)

私はオーストラリアのウェブサイトのレールプロジェクトに取り組んでいます。 その結果、彼らは、米国中心の「mm / dd / yyyy」ではなく、よりヨーロッパ標準の「dd / mm / yyyy」で日付形式を入力できるようにしたいと考えています。 日付フィールドを持つActiveRecordモデルがあります。 jQueryの日付ピッカーを使用して、テキストフィールドで日付を選択し、日付を適切な形式に設定しています。 しかし、レコードを保存しようとすると、日付が間違っています。 i18nガイドに従って、イニシャライザでカスタムの日付形式を設定した場合でも。

>> b = BlogPost.new
>> b.posted_on = '20/07/2010'
=> "20/07/2010"
>> b.posted_on
=> nil
>> b.posted_on = '07/20/2010'
=> Tue, 20 Jul 2010

RailsはDate.parseを使用して文字列をDateオブジェクトに変換しているようです。 プロジェクト全体でこれを修正する方法はありますか? モデルごとにカスタムコードを記述する必要はありません。

2 Answer


2


class Date
  class << self
    def _parse_with_us_format(date, *args)
      if date =~ %r{^(\d+)/(\d+)/(\d+)$}
        _parse_without_us_format("#{$3.length == 2 ? "20#{$3}" : $3}-#{$1}-#{$2}", *args)
      else
        _parse_without_us_format(date, *args)
      end
    end
    alias_method_chain :_parse, :us_format
  end
end


0


デフォルトの日付形式(config / environment.rb内)を変更してみてください

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.
    merge!(default => '%d/%m/%Y %H:%M')

詳細はこちらhttp://blog.nominet.org.uk/tech/2007/06/14/date-and-time-formating-issues-in-ruby-on-rails/