aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/helpers/form_helper.rb
diff options
context:
space:
mode:
authorCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2013-01-03 01:15:12 -0200
committerCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2013-01-06 10:54:22 -0200
commit7843e009d2bc8d088437ff6f43e47ba113de9dee (patch)
treed7c80cda26ec2304c3281a3bbae8179e5262976a /actionpack/lib/action_view/helpers/form_helper.rb
parente56e3db6e6c3ed1618311122c51066a8ac8beb0e (diff)
downloadrails-7843e009d2bc8d088437ff6f43e47ba113de9dee.tar.gz
rails-7843e009d2bc8d088437ff6f43e47ba113de9dee.tar.bz2
rails-7843e009d2bc8d088437ff6f43e47ba113de9dee.zip
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.
Diffstat (limited to 'actionpack/lib/action_view/helpers/form_helper.rb')
-rw-r--r--actionpack/lib/action_view/helpers/form_helper.rb13
1 files changed, 6 insertions, 7 deletions
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