Значение по умолчанию для date_helper в formtastic - PullRequest
4 голосов
/ 11 ноября 2009

Как бы базово это ни звучало, я не могу установить дату по умолчанию для даты, как в:

- semantic_form_for resource do |f|
  - f.inputs do
    = f.input :issued_on, :default => Date.today
  = f.buttons

Приведенное выше просто отображает пустые столбцы, если у ресурса нет даты.

Буду признателен за указание на то, что я, возможно, делаю неправильно.

Ответы [ 5 ]

7 голосов
/ 11 ноября 2009

Вы можете установить значение по умолчанию для самого объекта на вашем контроллере

def edit
  @resource = Resource.find(params[:id])
  @resource.issued_on ||= Date.today
end
2 голосов
/ 01 декабря 2009

Недавно мы внедрили опцию: selected для всех входов: select,: radio и: check_boxes в Formtastic, так что это будет в следующем выпуске патча (0.9.5) или 1.0. До тех пор совет по созданию after_initialize или по умолчанию в контроллере является хорошим советом, однако я считаю, что иногда лучшим человеком, который выбирает значение по умолчанию, является designer , который может не быть удобные контроллеры или модели, поэтому мы добавили это как часть Formtastic DSL.

2 голосов
/ 11 ноября 2009

Вы должны определить after_initialize в модели. Если в вашей модели определен метод after_initialize, он вызывается как обратный вызов для new, create, find и любых других методов, которые генерируют экземпляры вашей модели.

В идеале вы бы хотели определить это так:

class resource < ActiveRecord::Base

  def after_initialize
    @issued_on ||= Date.today
  end
  ...
end

Тогда ваш взгляд будет выглядеть так:

- semantic_form_for resource do |f|
  - f.inputs do
    = f.input :issued_on
  = f.buttons

Это также защитит от нулевых ошибок, если вы найдете запись, в которой эти поля не установлены. Однако этого не должно произойти, если вы не создадите запись напрямую без ActiveRecord.

0 голосов
/ 07 сентября 2011

Мне нравится следующий способ

after_initialize :set_issued_on

def set_issued_on
  @issued_on||=Date.today
end

Немного дольше, но красиво и ясно

0 голосов
/ 09 февраля 2011

Вы можете добавить следующее в файл модели

def after_initialize
    self.start ||= Date.today
    self.token ||= SecureRandom.hex(4)
    self.active ||= true
end

выше выдано

@issued_on ||= Date.today

у меня не сработало

...