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 /actionpack/lib/action_view | |
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.
Diffstat (limited to 'actionpack/lib/action_view')
-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 |