From 7843e009d2bc8d088437ff6f43e47ba113de9dee Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Thu, 3 Jan 2013 01:15:12 -0200 Subject: Refactor the logic that checks whether or not to emit the hidden id field By checking for object.persisted? first, we avoid the hash lookups for new objects. --- actionpack/lib/action_view/helpers/form_helper.rb | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'actionpack/lib/action_view') diff --git a/actionpack/lib/action_view/helpers/form_helper.rb b/actionpack/lib/action_view/helpers/form_helper.rb index d0c8edc901..8a1e886b7f 100644 --- a/actionpack/lib/action_view/helpers/form_helper.rb +++ b/actionpack/lib/action_view/helpers/form_helper.rb @@ -1818,16 +1818,15 @@ module ActionView end end - def fields_for_nested_model(name, object, options, block) + def fields_for_nested_model(name, object, fields_options, block) object = convert_to_model(object) + emit_hidden_id = object.persisted? && fields_options.fetch(:include_id) { + options.fetch(:include_id, true) + } - parent_include_id = self.options.fetch(:include_id, true) - include_id = options.fetch(:include_id, parent_include_id) - hidden_field_id = object.persisted? && include_id - - @template.fields_for(name, object, options) do |f| + @template.fields_for(name, object, fields_options) do |f| output = @template.capture(f, &block) - output.concat f.hidden_field(:id) if output && hidden_field_id && !f.emitted_hidden_id? + output.concat f.hidden_field(:id) if output && emit_hidden_id && !f.emitted_hidden_id? output end end -- cgit v1.2.3