Дополнительные поля с настраиваемым рельсом - PullRequest
6 голосов
/ 21 января 2010

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

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)?

1 Ответ

5 голосов
/ 21 января 2010

Это было довольно сложно (довольно плохо знакомо с 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, используя extract_options!.

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