Hey all,
I looked at source code for fields_for:
def fields_for(record_name, record_object = nil, fields_options = {}, &block) fields_options, record_object = record_object, nil if record_object.is_a?(Hash) && record_object.extractable_options? fields_options[:builder] ||= options[:builder] fields_options[:parent_builder] = self fields_options[:namespace] = fields_options[:parent_builder].options[:namespace]
case record_name when String, Symbol if nested_attributes_association?(record_name) return fields_for_with_nested_attributes(record_name, record_object, fields_options, block) end else record_object = record_name.is_a?(Array) ? record_name.last : record_name record_name = ActiveModel::Naming.param_key(record_object) end
index = if options.has_key?(:index) "[#{options[:index]}]" elsif defined?(@auto_index) self.object_name = @object_name.to_s.sub(%r\[\]$/,"") "[#{@auto_index}]" end record_name = "#{object_name}#{index}[#{record_name}]"
@template.fields_for(record_name, record_object, fields_options, &block) end
Notice this part:
options[:builder]
this options hash is no where to be defined. In argument list, there's only a fields_options hash. Reason why this matters to me is because I am trying to override this method in my application_helper.rb in order to extend it.