1

今年の前の月が表示されないように、月のドロップダウン リストを作成したいと考えています。今私のコードは次のとおりです。

<%= f.date_select :card_expires_on, :discard_day => true, :start_year => Date.today.year, :end_year => (Date.today.year+10), :add_month_numbers => true %>

今はすべての月が表示されていますが、過去の月を削除または非表示にしたい..方法はありますか?

前もって感謝します!:-)

4

2 に答える 2

1

私はこれをテストしていませんが、うまくいくはずだと思います。

<%= select nil, "name_of_your_model[card_expires_on(1i)]", (Date.today.year..Date.today.year+10).collect { |y| y }, options = {}, id: "card_expires_on_1i" %>

<%= select nil, "name_of_your_model[card_expires_on(2i)]", (Date.today..Date.today.end_of_year).collect { |d| ["#{d.strftime('%m')} - #{d.strftime('%B')}", d.strftime('%m')] }.uniq, options = {}, id: "card_expires_on_2i" %>

<%= text_field_tag "name_of_your_model[card_expires_on(3i)]", nil, type: 'hidden', value: Date.today.day, id: "card_expires_on_3i" %>

基本的に、フォームにdate_selectを入力すると、3つの選択が作成されます。次に、Railsは「(1i)」、「(2i)」、および「(3i)」を使用して、それぞれ年、月、および日を元に戻します。「name_of_your_model」をフォームに使用されるモデルの名前に変更し、text_fieldの値をデフォルトの日に変更してください。

アップデート

私はこれをテストしたところ、うまくいきました!

于 2013-03-16T23:44:09.373 に答える
0

これをヘルパーに追加できるはずだと私には思えます。私はjavascriptから遠ざかります

独自のremaining_months()などのメソッドを追加すると、はるかに簡単に使用できます。

于 2013-03-16T16:45:15.063 に答える