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 放入表单时,它会创建三个选择。然后,Rails 使用“(1i)”、“(2i)”和“(3i)”分别将年、月和日重新组合在一起。确保将“name_of_your_model”更改为用于表单的模型名称,并将 text_field 的值更改为您想要的默认日期。

更新

我刚刚测试了这个,它确实有效!

于 2013-03-16T23:44:09.373 回答
0

在我看来,您应该能够将其添加到助手中。我会回避 javascript

为剩余月份()添加您自己的方法或一些类似的东西会更容易使用。

于 2013-03-16T16:45:15.063 回答