I\'m having trouble getting fields_for
to work on an Array attribute of a non-ActiveRecord model.
Distilled down, I have to following:
models/pa
I think that it can be done without the need of each:
= form_for @parent, :url => new_parent_path do |f|
= f.fields_for :bars do |r|
= r.object.inspect
You need to set some methods that are expected in the parent class to identify the collection.
class Parent
def bars_attributes= attributes
end
end
And you also will need to make sure that the objects in the array respond to persisted (so you cannot use strings) :(
I ditched the fields_for and added multiple: true
= form_for @parent, :url => new_parent_path do |f|
- @parent.bars.each_with_index do |bar, i|
= f.text_field :bars, value: bar, multiple: true, id: "bar#{i}"
I think the correct technique is:
= form_for @parent, :url => new_parent_path do |f|
- @parent.bars.each do |bar|
= f.fields_for "bars[]", bar do |r|
= r.object.inspect
Quite why it can't be made to Just Work I'm not sure, but this seems to do the trick.