我有一個嵌套窗體和3個相關模型。我希望所有的字段都由我的自定義表單構建器PanelFormBuilder
構建。然而,只有form_for
似乎由我的表單構建器處理,並且fields_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
誰能告訴我我做錯了什麼?
感謝