2012-09-25 11 views
5

トライアドレール+ 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同様の質問を行ってきました。

ご協力いただきありがとうございます。

+0

数時間の苦労の末、私はついにミステリーを解決しました。もちろん、それは私の誤りでした。私の目の前では、「ui-dateディレクティブはモデル値を標準のjavascriptのDateオブジェクトとして保存し、期待しています。日付フィールドを文字列として渡していました。 – CarmineM74

+0

だから、フィールドは日付で文字列ではないことを確認しましたか? – igreulich

+0

私は単にanglejsサービスのバックエンドからの成功した応答を傍受し、文字列表現をDateインスタンスに置き換えました。 – CarmineM74

答えて

関連する問題