Как исключить месяцы из Ruby on Rails помощник по форме `date_select`? - PullRequest
1 голос
/ 11 марта 2011

Я хочу иметь date_select, чтобы шокировать меня только через несколько месяцев.

Так что, если мы будем в марте, это будет только показывать:


- 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]}

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

Если вы хотите всего несколько месяцев, вы можете сделать пользовательских помощников.

Сделать константу месяца в 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 - это имя поля в ваших моделях, которое равно :meeting_date.Просто передайте это как строку.

0 голосов
/ 11 марта 2011
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 помощник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...