У меня есть вложенная форма с 3 родственными моделями. Я хочу, чтобы все поля были построены моим настраиваемым конструктором форм PanelFormBuilder
. Однако мой конструктор форм обрабатывает только form_for
, а fields_for
- по умолчанию. Я не могу на всю жизнь понять, почему.
Это работает:
<%= panel_form_for @firm do |f| %>
Это не:
<%= panel_fields_for @firm.company do |c| %>
Вот пользовательские методы:
module ApplicationHelper
def panel_form_for(object, options = {}, &block)
options[:builder] = PanelFormBuilder
form_for(object, options, &block)
end
def panel_fields_for(object, options = {}, &block)
options[:builder] = PanelFormBuilder
fields_for(object, options, &block)
end
end
Вот пользовательский конструктор форм
class PanelFormBuilder < ActionView::Helpers::FormBuilder
delegate :content_tag, :tag, to: :@template
%w[text_field text_area password_field].each do |method_name|
define_method(method_name) do |name, *args|
options = args.extract_options!
options.merge!(:class => "required")
super(name, *(args + [options]))
end
end
end
Может кто-нибудь сказать мне, что я делаю не так?
Спасибо