2010-07-12 3 views
2

Я использую помощник Rails datetime_select в одной из моих форм. В настоящее время у меня есть требование изменить выпадающие списки для day, year, hour и minute, чтобы быть текстовыми полями с проверкой. Есть ли способ указать, что я хочу текстовые поля для этих полей? Или, возможно, другой помощник, который будет делать то, что мне нужно?Как изменить тип ввода помощника Rails datetime_select?

вот мое использование:

datetime_select(:campaign, :start_date, :order => [:day, :month, :year, :hour, :minute]) 

ответ

4

как насчет прокатки своего собственного простого помощника, как

def datetime_text_fields(object_name, method) 
    html = text_field_tag("#{object_name}[#{method}(3i)]", Date.today.day.to_s, :length => 2) 
    html << select_month(Date.today, :field_name => "#{object_name}[#{method}(2i)]") 
    html << text_field_tag("#{object_name}[#{method}(1i)]", Date.today.year.to_s, :length => 4) 
    html << " " 
    html << text_field_tag("#{object_name}[#{method}(4i)]", Time.now.hour.to_s, :length => 2) 
    html << ":" 
    html << text_field_tag("#{object_name}[#{method}(5i)]", Time.now.min.to_s, :length => 2) 
end 

Вы могут добавить больше форматирования STUFF/сепараторы и т.д., но это в основном возвращается, чтобы исправить поле имена для рельсов, которые будут определены как DateTime. Rails ожидает поля, названные как date(1i), 1i = год, 2i = месяц и т.д.

Честно говоря, я не проверял или что-нибудь, но вывод в консоли выглядел довольно убедительно;)

0

Почему бы не свернуть свой собственный, просто укажите поля ввода точно так же, как это делает помощник выбора даты, и вы получаете все внешние преимущества при перемещении пользовательского интерфейса. Или используйте :order, чтобы ваш выбор даты дал выбор месяца, и используйте некоторую магию javascript для другого ввода.

Вы можете использовать jquery datepicker и заполнять скрытые поля с тем же соглашением об именах, что и рельсовый датпикер.

Смежные вопросы