保存に逆転している(私の問題はかなりdescribed in this questionと同じであり、唯一その答えは私の場合には動作しません。)Rails3/jQueryのUI日付ピッカー - 月と日が
私が使用していますPostgres DBを持つRailsアプリケーションでjQuery UI Datepickerデフォルトの実装では、mm/dd/yyの日付形式が使用され、選択した日付が表示されます。ただし、レコードをデータベースに保存すると、月と日が逆になり、yy-dd-mmと表示されます。したがって、3/11/2012を選択すると、3月11日ではなく11月3日として保存され、3/31/2012のような日付は存在しないため、まったく保存されません。
<%= f.text_field :foo, :value => (@model.foo.blank? ? '' : @model.foo.strftime('%m/%d/%Y')), class: "datepicker" %>
これは、表示される:私は、この修正しようと、これまでダウン3つの異なる道を行ってきた
:ので表示は、私が望んでいたかに見えた
1)最初の試みは、テキストフィールドを再フォーマットすることでした2012年3月31日に正しく初期化されましたが、保存時には逆になりました。
2)次に、日付が格納されているデフォルトの方法を変更して、問題を回避することを考えました。これは、まったく違いはありませんでした
# config/locales/en.yml
en:
date:
formats:
default: "%m/%d/%Y"
:this questionへの答えで述べたように、私はのconfig /ロケール/ en.ymlに以下を追加しました。次はthis questionを発見し、これらの行で設定/イニシャライザ/ date_formats.rbを作成しようとした:上記と同じ
Date::DATE_FORMATS[:default]="%m/%d/%Y"
Time::DATE_FORMATS[:default]="%m/%d/%Y %H:%M"
、差がありません。
3)たくさんの組み合わせで遊んだ後、私はDIDの仕事がdatepickerプラグインの呼び出しでyyyy-mm-dd形式を指定していたことを発見しました。日付を正常に保存することができます。カレンダーから
$(".datepicker").datepicker({ dateFormat: 'yy-mm-dd' });
選択月31日は、2012年3月31日にフィールドを移入し、まだ保存した後、2012年3月31日のように表示されますので、日付ピッカーの呼び出しは次のようになります。
しかし、mm/dd/yy形式で動作するようにdatepickerをどのように取得できますか?それは難しいことだとは想像できませんが、何が欠けていますか? Postgresに日付がどのように格納されているかを何かする必要がありますか? (日付ではなく日付で指定されています)
、私はフィールドを「日付」ではなく「テキスト」に切り替えました。理想的ではありませんが、問題をむしろ簡単に解決します。 – ellawren
何回か切り替えるのが理想的かどうかという良い解決策です。まだ問題を知りたいかもしれない好奇心のために、後であるかもしれません。 –
Rails 3.2.3、PostgreSQLとRuby 1.9.3。 datepickerフォーマットはmm-dd-yyに設定されていましたが、しばらくの間働いていましたが、リファクタリングを行っていますが、いくつかの日付を面倒なく保存できますが、特に日付は保存されません。だから私はyy-mm-ddに再フォーマットするつもりで、何が起こるかを見ていきます。 – thomasvermaak