Дополнительные поля с пользовательским конструктором форм направляющих

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

for_for(@foo, :builder => MyBuilder) do |f|
  # stuff I shouldn't have to worry about
  # this should be put in all the time without me having to do it
  hidden_field_tag('extra', 'myextrainfo')

  # normal things I would put in
  f.text_field(:bar)
end

Что я должен сделать в своем пользовательском конструкторе форм, или что я могу переопределить или цепочка метода для добавления некоторых дополнительных скрытых вещей в форме (просто не добавляя параметрические усилители URL)?

6
задан Veger 21 January 2010 в 18:39
поделиться

1 ответ

Это было вроде сложно (разумно новичок в Ruby / Rails), но я нашел решение. Поместите его в файл помощника (или другое место в зависимости от ваших потребностей).

module ActionView::Helpers::FormHelper
  def form_for_with_updated_code(record_or_name_or_array, *args, &proc)
    form_for_without_updated_code(record_or_name_or_array, *args) { |f|
       concat(hidden_field_tag('extra','info'))
       proc.call(f)
    }
  end
  alias_method_chain :form_for, :updated_code
end

Он переопределяет метод form_for и добавляет ваше скрытое поле. Вы можете добавить код до дополнительных личных вариантов, например, для заполнения скрытых полей (ов), из * ARGS * ARGS , с использованием Extract_Options! .

5
ответ дан 17 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: