Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

fields_for with inline blocks and nested attributes already persisted…

… does not render properly

[#6381 state:committed]
  • Loading branch information...
commit ee0b92ec7a87967c55fa2992350b12493d3c148b 1 parent 631e23e
@spastorino spastorino authored
Showing with 7 additions and 10 deletions.
  1. +7 −10 actionpack/lib/action_view/helpers/form_helper.rb
View
17 actionpack/lib/action_view/helpers/form_helper.rb
@@ -549,8 +549,11 @@ def apply_form_for_options!(object_or_array, options) #:nodoc:
# <% end %>
# ...
# <% end %>
- def fields_for(record, record_object = nil, options = nil, &block)
- capture(instantiate_builder(record, record_object, options, &block), &block)
+ def fields_for(record, record_object = nil, options = {}, &block)
+ builder = instantiate_builder(record, record_object, options, &block)
+ output = capture(builder, &block)
+ output.concat builder.hidden_field(:id) if output && options[:hidden_field_id] && !builder.emitted_hidden_id?
+ output
end
# Returns a label tag tailored for labelling an input field for a specified attribute (identified by +method+) on an object
@@ -1323,14 +1326,8 @@ def fields_for_with_nested_attributes(association_name, args, block)
def fields_for_nested_model(name, object, options, block)
object = convert_to_model(object)
- if object.persisted?
- @template.fields_for(name, object, options) do |builder|
- block.call(builder)
- @template.concat builder.hidden_field(:id) unless builder.emitted_hidden_id?
- end
- else
- @template.fields_for(name, object, options, &block)
- end
+ options[:hidden_field_id] = object.persisted?
+ @template.fields_for(name, object, options, &block)
end
def nested_child_index(name)
Please sign in to comment.
Something went wrong with that request. Please try again.