Как получить значение по умолчанию для выбора даты / времени Formtastic? - PullRequest
2 голосов
/ 28 февраля 2011

Я использую Formtastic 1.2.3.Я хочу, чтобы текущая дата и время уже были выбраны при загрузке формы.Я пробовал много комбинаций с :default или :selected, но ни одна не работала.Даже со страницы GitHub Formtastic я не могу получить информацию об этом.Какие-либо предложения?Спасибо за ваше время!

= form.input :date,:hint => 'Select a date',
             :prompt => {:day => "Day", :month => "Month", :year => "Year"},
             :start_year => Time.now.year
= form.input :time

Ответы [ 4 ]

4 голосов
/ 20 ноября 2013

Использование after_initialize для установки значения по умолчанию для формы слишком жестко.Как насчет случаев, когда допустимы пустые значения?Это ответственность контроллера, а не модели.

class ResourceController < ApplicationController
  def new
    # do stuff
    @resource.important_date ||= Time.zone.today
  end
end 
1 голос
/ 26 августа 2014

Я согласен с @Jeriko. Использование after_initialize просто напрашивается на неприятности. Другой вариант, если у вас нет доступа к контроллеру (или вы не хотите получать к нему доступ), это сделать что-то вроде этого:

(f.object.received_on = Time.zone.today) unless f.object.received_on.present?

Мне нужно было сделать это для инициализации формы Active Admin, где я не хочу получать доступ к контроллеру и определенно не хочу касаться модели.

1 голос
/ 27 апреля 2012

Я сделал это, установив значение в активном объекте записи непосредственно при его создании следующим образом:

В модельном классе:

def after_initialize
  self.start_time ||= Time.now
end

Затем, когда форма будет отображена, для нее уже будет заполнено и установлено правильное время.

1 голос
/ 28 февраля 2011

Ваш синтаксис выглядит хорошо, и он должен работать (работает для меня). Вы также можете добавить ограничение: as =>: date на всякий случай.

form.input :date, :as => :date, :hint => 'Select a date',
         :prompt => {:day => "Day", :month => "Month", :year => "Year"},
         :start_year => Time.now.year

Я нашел это обсуждение в группах Google, где Джастин Френч обсуждает то же самое. Может быть, это тоже поможет.

...