Skip to content

Commit 56089ca

Browse files
Refactor FormBuilder arguments and default config
* Do not reopen AV::Base to define default form builder Inside the load hook we are already in AV::Base context. * Do not pass the given block to the form builder The block is evaluated in fields_for context using capture, with the builder as argument. This means we do not need to give the block to the FormBuilder itself.
1 parent d4a9ce8 commit 56089ca

2 files changed

Lines changed: 10 additions & 13 deletions

File tree

actionpack/lib/action_view/helpers/form_helper.rb

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ def form_for(record, options = {}, &proc)
373373
options[:html][:method] = options.delete(:method) if options.has_key?(:method)
374374
options[:html][:authenticity_token] = options.delete(:authenticity_token)
375375

376-
builder = options[:parent_builder] = instantiate_builder(object_name, object, options, &proc)
376+
builder = options[:parent_builder] = instantiate_builder(object_name, object, options)
377377
fields_for = fields_for(object_name, object, options, &proc)
378378
default_options = builder.multipart? ? { :multipart => true } : {}
379379
default_options.merge!(options.delete(:html))
@@ -601,7 +601,7 @@ def apply_form_for_options!(record, object, options) #:nodoc:
601601
# ...
602602
# <% end %>
603603
def fields_for(record_name, record_object = nil, options = {}, &block)
604-
builder = instantiate_builder(record_name, record_object, options, &block)
604+
builder = instantiate_builder(record_name, record_object, options)
605605
output = capture(builder, &block)
606606
output.concat builder.hidden_field(:id) if output && options[:hidden_field_id] && !builder.emitted_hidden_id?
607607
output
@@ -925,7 +925,7 @@ def range_field(object_name, method, options = {})
925925

926926
private
927927

928-
def instantiate_builder(record_name, record_object, options, &block)
928+
def instantiate_builder(record_name, record_object, options)
929929
case record_name
930930
when String, Symbol
931931
object = record_object
@@ -936,7 +936,7 @@ def instantiate_builder(record_name, record_object, options, &block)
936936
end
937937

938938
builder = options[:builder] || ActionView::Base.default_form_builder
939-
builder.new(object_name, object, self, options, block)
939+
builder.new(object_name, object, self, options)
940940
end
941941
end
942942

@@ -967,9 +967,9 @@ def to_model
967967
self
968968
end
969969

970-
def initialize(object_name, object, template, options, proc)
970+
def initialize(object_name, object, template, options)
971971
@nested_child_index = {}
972-
@object_name, @object, @template, @options, @proc = object_name, object, template, options, proc
972+
@object_name, @object, @template, @options = object_name, object, template, options
973973
@parent_builder = options[:parent_builder]
974974
@default_options = @options ? @options.slice(:index, :namespace) : {}
975975
if @object_name.to_s.match(/\[\]$/)
@@ -1183,9 +1183,6 @@ def convert_to_model(object)
11831183
end
11841184

11851185
ActiveSupport.on_load(:action_view) do
1186-
class ActionView::Base
1187-
cattr_accessor :default_form_builder
1188-
@@default_form_builder = ::ActionView::Helpers::FormBuilder
1189-
end
1186+
cattr_accessor(:default_form_builder) { ::ActionView::Helpers::FormBuilder }
11901187
end
11911188
end

actionpack/test/controller/render_test.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def hello_world
99
end
1010

1111
def nested_partial_with_form_builder
12-
render :partial => ActionView::Helpers::FormBuilder.new(:post, nil, view_context, {}, Proc.new {})
12+
render :partial => ActionView::Helpers::FormBuilder.new(:post, nil, view_context, {})
1313
end
1414
end
1515
end
@@ -558,11 +558,11 @@ def partial_with_locals
558558
end
559559

560560
def partial_with_form_builder
561-
render :partial => ActionView::Helpers::FormBuilder.new(:post, nil, view_context, {}, Proc.new {})
561+
render :partial => ActionView::Helpers::FormBuilder.new(:post, nil, view_context, {})
562562
end
563563

564564
def partial_with_form_builder_subclass
565-
render :partial => LabellingFormBuilder.new(:post, nil, view_context, {}, Proc.new {})
565+
render :partial => LabellingFormBuilder.new(:post, nil, view_context, {})
566566
end
567567

568568
def partial_collection

0 commit comments

Comments
 (0)