2009-08-20 23 views
0

我有一個select_date,我想限制用戶可以選擇的月份。Rails - select_date - 限制月數?

<%= select_date(Time.now, :order => [:month, :day, :year ], :datetime_separator => '-', :time_separator => ':', :discard_seconds => true, :discard_minutes => true, :start_month => Time.now.month, :end_month => Time.now.month +1, :start_year => Time.now.year, :end_year => Time.now.year, :prefix => 'start_date') %> 

然而,似乎沒有辦法做到這一點。您無法限制select_date顯示的月數。任何人都可以解決這個問題?

回答

1

沒有辦法,我知道的,解決這個使用Rails。

相反,我使用這樣的:

http://code.google.com/p/calendardateselect/

限制的時間範圍爲這樣:

<%= f.calendar_date_select :start_date, :embedded => true, :valid_date_check => "((date.stripTime() < ((new Date()).stripTime()).setMonth(new Date().getMonth() + 1)) && (date.stripTime().setDate(date.getDate() + 1) > (new Date()).stripTime()))", :year_range => [Time.now.year, Time.now.year], :time => false %> 

這使我限制的時間量,用戶可以通過任何範圍選擇,但在我的情況下,按月。

0

如何在驗證中做到這一點?或者把這些日期幫助者扔掉(無論如何,他們都想用它們輸入日期,我的意思是......)並使用真正的日曆javascript thingy。

我可以推薦http://www.dynarch.com/projects/calendar/old/

我使用以下剪去自動將它們添加到我的日期輸入文本字段。我們在這裏使用dd.mm.yyyy年風格,但將其改爲別的東西不應該花費太多時間。

function setupDateFields() { 
    $$("input.date").each(function(input) { 
     setupDateField(input); 
    }); 

} 

function setupDateField(id, time) { 
    var field = $(id); 

    var img = new Element('img', { 
      src: "/images/icons/calendar.png", 
      alt: "date", 
      id: field.id + "_img", 
      "class": "dateIcon"}); 
    field.insert({after: img}); 

    var format = time ? "%Y.%m.%d %H:%M:%S" : "%d.%m.%Y"; 

    Calendar.setup({ 
     date   : new Date(), 
     ifFormat  : format, 
     showsTime  : time, 
     inputField  : field.id, 
     button   : img.id, 
     firstDay  : 1, /* sunday */ 
     others   : true 
    }); 
} 

document.observe("dom:loaded", setupDateFields); 
+0

解決方案,但我不想再次重新實施一切。 任何人都知道如何修改源代碼,以添加:start_month,:end_month到幫助者? – 2009-08-20 17:40:22

+0

我查看了源代碼,我擔心你不能複製日期選擇幫助程序庫的部分內容(沒有配置選項,並且沒有start_month/end_month選項)。但也許別人有一個想法。 但是你自己來看看,代碼非常簡單,它在date_helper.rb文件中。 – reto 2009-08-20 17:47:24

+0

有沒有人用另一個幫手解決了這個問題?可能的日期時間? 修改源代碼似乎不太可能,因爲它由三行組成: def select_date(date = Date.current,options = {},html_options = {}) DateTimeSelector.new(date,options,html_options) .select_date 結束 – 2009-08-20 18:18:57