Skip to content

Commit

Permalink
Remove code duplication by extracting the _object_for_form_builder pr…
Browse files Browse the repository at this point in the history
…ivate method
  • Loading branch information
rafaelfranca committed Nov 15, 2021
1 parent 846f9e9 commit 41e4136
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions actionview/lib/action_view/helpers/form_helper.rb
Expand Up @@ -439,7 +439,7 @@ def form_for(record, options = {}, &block)
object_name = record
object = nil
else
object = record.is_a?(Array) ? record.last : record
object = _object_for_form_builder(record)
raise ArgumentError, "First argument in form cannot contain nil or be empty" unless object
object_name = options[:as] || model_name_from_record_or_class(object).param_key
apply_form_for_options!(record, object, options)
Expand Down Expand Up @@ -765,7 +765,7 @@ def form_with(model: nil, scope: nil, url: nil, format: nil, **options, &block)
url ||= polymorphic_path(model, format: format)
end

model = model.last if model.is_a?(Array)
model = _object_for_form_builder(model)
scope ||= model_name_from_record_or_class(model).param_key
end

Expand Down Expand Up @@ -1078,7 +1078,7 @@ def fields(scope = nil, model: nil, **options, &block)
options[:skip_default_ids] = !form_with_generates_ids

if model
model = model.last if model.is_a?(Array)
model = _object_for_form_builder(model)
scope ||= model_name_from_record_or_class(model).param_key
end

Expand Down Expand Up @@ -1568,6 +1568,10 @@ def range_field(object_name, method, options = {})
Tags::RangeField.new(object_name, method, self, options).render
end

def _object_for_form_builder(object) # :nodoc:
object.is_a?(Array) ? object.last : object
end

private
def html_options_for_form_with(url_for_options = nil, model = nil, html: {}, local: !form_with_generates_remote_forms,
skip_enforcing_utf8: nil, **options)
Expand Down Expand Up @@ -2278,7 +2282,7 @@ def fields_for(record_name, record_object = nil, fields_options = {}, &block)
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_object = @template._object_for_form_builder(record_name)
record_name = model_name_from_record_or_class(record_object).param_key
end

Expand Down

0 comments on commit 41e4136

Please sign in to comment.