トライアドレール+ anglejs + jQuery datepickerを一緒に動作させるのに苦労しています。jQuery datepicker + Rails 3.2.8 + AngularJS:日付の表示と継続
最初の問題は、バックエンドから取得した日付を表示することです。 UIがバックエンドからのデータを要求すると、ある時点で、JSON表記の次の のデータを受信します。
{"id":1,"ragione_sociale":"FrigoCaserta srl","indirizzo":"Strada provinciale Gricignano d'Aversa","cap":"81030","citta":"Gricignano d'Aversa","provincia":"CE","partita_iva":"1234","codice_fiscale":null,"tipo_contratto":"Orario","costo":"0.0","inizio":"2012-05-01","fine":"2013-09-22","$$hashKey":"005"}
関連するフィールドは、それぞれ "inizio"と "fine"(開始日と終了日)です。
RailsのタイムゾーンはEurope/Romeに設定されています。
日付ピッカーのオプションは次のように設定されている:{DATEFORMAT: 'DD/MM/YY' は}
したがってIとして "inizio" 日付を表示する入力フィールドを期待:代わりに、2012年1月5日 しかし、私は戻ってくる:24/03/2018。
正しい日付を示していますが、不要な セパレータと形式(2012-05-01)で「YY-MM-DD」にDATEFORMATオプションを変更...
舞台裏で何が起こる、しかし、です表示されたオブジェクトは、多少操作し、このようになりますこと:
「inizio」フィールドは現在「2012-05-01」を「:00 00.000Z 2012-04-30T22」から変換され{"id":1,"ragione_sociale":"FrigoCaserta srl","indirizzo":"Strada provinciale Gricignano d'Aversa","cap":"81030","citta":"Gricignano d'Aversa","provincia":"CE","partita_iva":"1234","codice_fiscale":null,"tipo_contratto":"Orario","costo":"0.0","inizio":"2012-04-30T22:00:00.000Z", ...
注
今、フォームをバックエンドにすべて送信するとレールは のdatepickerでフォーマットされた "inizio"の新しい値を受け取るので、gは腹を立てます。データベースのフィールドがDateだけであると、時間に関する情報が消えてしまい、残っているのはモデルに残った(間違った)日付だけです。
datepickerにローカライズオプションがありますが、この不要な動作を修正するために変更できるタイムゾーンは見つかりませんでした。
バックエンドのモデルの属性を使用してUIからの情報を解析できると思っていましたが、私はこのアプローチが嫌いです。
これをすべて処理する場合のベストプラクティスは何ですか?
私は運がなくStackOverflow同様の質問を行ってきました。
ご協力いただきありがとうございます。
数時間の苦労の末、私はついにミステリーを解決しました。もちろん、それは私の誤りでした。私の目の前では、「ui-dateディレクティブはモデル値を標準のjavascriptのDateオブジェクトとして保存し、期待しています。日付フィールドを文字列として渡していました。 – CarmineM74
だから、フィールドは日付で文字列ではないことを確認しましたか? – igreulich
私は単にanglejsサービスのバックエンドからの成功した応答を傍受し、文字列表現をDateインスタンスに置き換えました。 – CarmineM74