Rails - select_date - ограничить количество месяцев? - PullRequest
0 голосов
/ 20 августа 2009

У меня есть 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 ]

1 голос
/ 21 августа 2009

Насколько я знаю, нет способа решить эту проблему с помощью 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 голосов
/ 20 августа 2009

А как насчет проверки? Или выбросить этих помощников по датам (которые в любом случае хотят вводить даты вместе с ними, я имею в виду ...) и использовать настоящий календарь с JavaScript

Я могу порекомендовать http://www.dynarch.com/projects/calendar/old/.

Я использую следующие фрагменты, чтобы автоматически добавлять их в мои поля ввода даты. Мы используем здесь годовой стиль дд.мм.гггг, но его замена на что-то другое не должна занимать слишком много времени.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...