Rails 3.2アプリケーションのUser DOBフィールドでjquery-ui datepickerを使用しています。jquery-ui datepickerの最大/最小範囲を正しく設定し、デフォルトをRails列から初期化する方法はありますか?
私は次のことを達成しようとしている:
- 100年前に=分、今日=、最大を選択することができます日付の範囲を制限します。
- データベースに現在保存されている日付(ある場合)を使用してdatepickerを初期化します。
- dobテキストフィールドに特定の形式で選択した日付を表示します。
私のフォームは、次のようになります。.to_s(:long)
は私が後だ表示形式で
<%= form_for @user do |f| %>
<%= f.text_field :dob, :class=>'date-selector-dob', :value => (@user.dob.blank? ? '' : @user.dob.to_s(:long)) %>
<% end %>
。
次のjavascriptでは、datepickerは機能しますが、テキストフィールドは正しくフォーマットされていますが、最大/最小の日付は設定されていません。
$(function(){ // enabledate picker
$('.date-selector-dob').datepicker();
});
私は次のように私も、最小/最大範囲を設定し、初期化します。この機能に追加:
$(function(){ // enable date picker
$('.date-selector-dob').datepicker({minDate: new Date('-100Y'), maxDate: new Date('-1D')}); // enable datepicker and set range
$('.date-selector-dob').datepicker('setDate', new Date($('.date-selector-dob').attr('value'))); // initialize datepicker with stored value
});
このは正しく日付ピッカーを初期化ですが、は設定ではありません最小/最大範囲。私のアプローチは間違っていますか?
さらに、拡張機能は私の書式設定文字列をリセットし、データは.to_s(:long)
に従って表示されません。上記の基本関数を使用すると、この書式設定文字列が適切に適用されます。何が原因でしょうか?
私はこれで私の髪を引っ張っています!誰かが私が見逃しているものを見て、私が間違っていることを理解するのを助けることができれば、本当に感謝しています。ありがとう!
おかげミューを正しい日付形式を指定する必要があり、このため、道に従うことによって、日付を設定することができ
! min/maxは現在期待どおりに動作しています。私は表示形式の問題にもかかわらず混乱しています。これは、日付文字列を表示しているテキストフィールドに関連しています。したがって、フォーマットはレールで処理すべきではありませんか?私はなぜsetDateメソッドを追加すると、このメソッドを使わなくてもうまくいくと、この作業を止めるべきなのか混乱していますか? –
@AndyHarvey:あなたは、[ISO 8601](http://en.wikipedia.org/wiki/ISO-8601)形式で日付を開始し、日付ピッカーに使用する形式を伝えることをお勧めします。 datepickerは日付をテキスト入力に書き込むため、使用する形式を知る必要があります。 ISO 8601は、日付ピッカーが解析するのが簡単です。そして、 'setValue'呼び出しが必要ないはずです。ちょうど' 'の値を設定すれば十分です。 –
ああ、ところで、dateFormatは問題を解決します。しかし、私はまだRailsで定義されたフォーマットが適用されない理由について興味があります。 –