2011-03-11 74 views
1

從現在開始,我想有一個date_select來逗我幾個月。如何從Ruby on Rails date_select`表單助手中排除月份?

所以,如果我們是在3月,它會只顯示:

 

- March 
- April 
- May 
- June 
- July 
- August 
- September 
- October 
- November 
- December 
 

現在我有這樣的:

 

f.date_select :meeting_date,{:order=>[:month,:day]} 
 

有什麼樣start_month像有一個start_year屬性這個幫手?這樣我就可以使用這樣的:

 

f.date_select :meeting_date,{:start_month=>Time.now.month,:order=>[:month,:day]} 
 
+0

這似乎是一個壞主意。新年前夕你會有什麼有意義的選擇? – 2011-03-11 17:46:40

+0

這會節省一年'Time.now.year'我唯一想做的事情就是防止客戶安排在過去幾個月的約會 – 2011-03-11 17:49:13

+1

是否有你想使用date_select的特殊原因?如果您只選擇幾個月,爲什麼不簡單地使用正常選擇? – 2011-03-11 17:51:11

回答

-1
months = %w(Jan Feb March ...) 
f.date_select :meeting_date, :use_month_names => months[(Date.today.month - 1)..-1] 

但它會插入空白的項目,因爲:use_month_names預計磁盤陣列和12個項目。要刪除它們,你應該自己寫date_select幫手

+0

爲什麼我要空白項目 – 2013-09-07 00:54:44

2

如果你只需要幾個月,那麼你可以製作自定義助手。

做一個幾個月config/initializers/constants.rb

MONTHS = ['Jan', 'Feb', 'Marh'] #etc... 

常量如果你有一個從|f|你可以有一個月的建設者:

def month_select_builder(f, attr) 
    f.select attr.symbolize, options_for_select(MONTHS) 
end 

如果你只是有沒有生成器的form_tag則:

def month_select(attr) 
    select_tag attr.symbolize, options_for_select(MONTHS) 
end 

attr是n您的模型上的字段爲:meeting_date。只要將其作爲字符串傳遞即可。

+0

這是一個粘性,但不是它就像'select_month' helper? ? – 2011-03-11 19:28:07