diff options
author | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2013-01-03 01:15:12 -0200 |
---|---|---|
committer | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2013-01-06 10:54:22 -0200 |
commit | 7843e009d2bc8d088437ff6f43e47ba113de9dee (patch) | |
tree | d7c80cda26ec2304c3281a3bbae8179e5262976a | |
parent | e56e3db6e6c3ed1618311122c51066a8ac8beb0e (diff) | |
download | rails-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.
-rw-r--r-- | actionpack/lib/action_view/helpers/form_helper.rb | 13 |
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 |