私のユーザは%d /%m /%Yの日付フォーマットを使用したいとします(例:26/02/2011)。それが正常に動作しています日付文字列を変換してレール付きデータベースに保存するときに使用するフォーマット
environment.rb :
ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!(
:default => "%d/%m/%Y"
)
が、この形式で入力された日付文字列を保存しようとしたとき、私は一つの問題があります。environment.rbにでデフォルトフォーマット:
が正しく日付を表示するためには、私は、それゆえに変更しましたデータベース。
Railsは%d /%m /%Yの代わりに%m /%d /%Yの文字列をとっているようです。
04/02/2011は2011-04-02と26/02として保存されています私が使用することができ
mymodel.rb :
def datefield_formatted
datefield.strftime '%m/%d/%Y'
end
def datefield_formatted=(value)
self.datefield = Time.parse(value)
end
view.html.erb :
<%= form.input :datefield_formatted %>
:/ 2011は、私は、このためのソリューションを探したが私が見つけたものは下記のような私のモデルで日付を再フォーマットに依存している...
単に無効と保存されていませんこのソリューションは、すべての '日付フィールド'(私のアプリケーションでは多くがあります)のために私のモデルの変更が必要になります。
これで、データベースに変換して保存するときに、Railsに%d /%m /%Yという文字列を正しく読み取らせるように指示するのが不思議でした。
日付が日付フィールドとして保存されているに追加SQL。 - これが私の問題です。私のフォームは日付として保存された文字列を送信しますが、Railsは日付を適切な形式で解析しません。 – LapinLove404
はい、DATE_FORMATSを変更したため、ローカリゼーションを行っても問題ありません。 – Devenv
DATES_FORMATSを削除してローカリゼーションを使用していませんでした。 - 私のフォームが2011年2月6日の日付文字列を送信すると、2011-02-06の代わりに2011-06-02として保存されます。 :-( – LapinLove404