2013-03-15 38 views
0

我想創建一個月下拉列表,以避免出現當年的前幾個月。 現在我的代碼是:在date_select中禁用上個月Ruby on Rails

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

它顯示了我所有的幾個月了,但我想刪除或隱藏過去months..Is有什麼辦法?

在此先感謝! :-)

+0

沒有js,沒有辦法做到這一點。使用js,你最好使用一個月選擇器:) – jvnill 2013-03-15 06:16:19

+0

ohk謝謝.. @jvnill – 2013-03-15 06:17:47

+0

hey @jvnill你能否給我建議任何示例或js的簡短代碼。 – 2013-03-15 06:19:57

回答

0

對我來說,好像你應該可以把它添加到幫助。我會迴避javascript

爲remaining_months()添加您自己的方法,或者某些這樣的事情會更簡單易用。

0

我沒有測試過這個,但我認爲它應該可以工作。

<%= 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放在你的窗體中時,它會創建三個選擇。然後,Rails使用「(1i)」,「(2i)」和「(3i)」將年,月和日分別重新組合在一起。確保將「name_of_your_model」更改爲表單所用模型的名稱以及text_field的值,以將其更改爲默認日期。

更新

我只是測試這一點,它的工作!