Rails - select_date - 限制月数?

时间:2009-08-20 17:25:19

标签: ruby-on-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显示的月数。有人可以解决这个问题吗?

2 个答案:

答案 0 :(得分: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 %>

这允许我限制用户可以按任何范围选择的时间量,但在我的情况下按月计算。

答案 1 :(得分: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);