Skip to content

Commit 41e4136

Browse files
authored
Remove code duplication by extracting the _object_for_form_builder private method
1 parent 846f9e9 commit 41e4136

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

actionview/lib/action_view/helpers/form_helper.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ def form_for(record, options = {}, &block)
439439
object_name = record
440440
object = nil
441441
else
442-
object = record.is_a?(Array) ? record.last : record
442+
object = _object_for_form_builder(record)
443443
raise ArgumentError, "First argument in form cannot contain nil or be empty" unless object
444444
object_name = options[:as] || model_name_from_record_or_class(object).param_key
445445
apply_form_for_options!(record, object, options)
@@ -765,7 +765,7 @@ def form_with(model: nil, scope: nil, url: nil, format: nil, **options, &block)
765765
url ||= polymorphic_path(model, format: format)
766766
end
767767

768-
model = model.last if model.is_a?(Array)
768+
model = _object_for_form_builder(model)
769769
scope ||= model_name_from_record_or_class(model).param_key
770770
end
771771

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

10801080
if model
1081-
model = model.last if model.is_a?(Array)
1081+
model = _object_for_form_builder(model)
10821082
scope ||= model_name_from_record_or_class(model).param_key
10831083
end
10841084

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

1571+
def _object_for_form_builder(object) # :nodoc:
1572+
object.is_a?(Array) ? object.last : object
1573+
end
1574+
15711575
private
15721576
def html_options_for_form_with(url_for_options = nil, model = nil, html: {}, local: !form_with_generates_remote_forms,
15731577
skip_enforcing_utf8: nil, **options)
@@ -2278,7 +2282,7 @@ def fields_for(record_name, record_object = nil, fields_options = {}, &block)
22782282
return fields_for_with_nested_attributes(record_name, record_object, fields_options, block)
22792283
end
22802284
else
2281-
record_object = record_name.is_a?(Array) ? record_name.last : record_name
2285+
record_object = @template._object_for_form_builder(record_name)
22822286
record_name = model_name_from_record_or_class(record_object).param_key
22832287
end
22842288

0 commit comments

Comments
 (0)