Question

I have a model components which belongs to a main container model. The components model has many servers and services. Basically all is fine, except it renders out two of each from because in my controller I set up the fields_for with this code:

@reference.components.build.servers.build
@reference.components.build.services.build

So it is clear why I am getting multiple forms, Is there a way to build the has_many relationships on one line? I have tried:

@reference.components.build.servers.build.services.build

and

1.times { @reference.components.build.servers.build }
1.times { @reference.components.build.services.build }

Thank you

UPDATE ->

Moving the code into a block seems to work (I was just guessing)

@reference.components.build do |f|
  f.servers.build
  f.services.build
end

That code is in the controller.

Était-ce utile?

La solution

The key thing is to only call components.build once, or else you'll be adding one component per call to build

For example

component = @reference.components.build
component.servers.build
component.services.build

should work fine. The block form you've stumbled on achieves the same thing (I have a feeling that that was only added in 3.2, possibly one of the minor releases after 3.2)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top