Edit a model with has_many and at the same time adding a new object associated.

I have Shop has_many :documents and Documen belongs_to :shop.
When I create a new shop I use accept_nested_attributes_for :documents
in the model and fields_for in the form, so I can create a new shop
and at the same time a document associated to the shop.
I want to add a new document associated to the shop also when I edit
the shop, at the same time I edit the shop.
If I call the edit action for shop, in the form I have the fields for
one of the documents associated with their values but I want to add a
new document.
There is a way to do this?

Checkout these two railscasts, they should get you started in right direction:

http://railscasts.com/episodes/196-nested-model-form-part-1

http://railscasts.com/episodes/197-nested-model-form-part-2

Chirag
http://sumeruonrails.com

I've found that is more simpler than I've thought.

Models are:

Shop has_many :document, Document belongs_to :shop.

For edit action I've done:

@shop = Shop.find(params[:id])
@document = @shop.documents.new

and in the form I've done:

fields_for @document.

Now I can modify an existing shop and at the same time add a document.
Do you think it's all correct?

I’m assuming this is rails 3.

For your edit action you don’t need the @document variable. You can refer to all of your documents via the :has_many association you created in the model so @shop.documents will suffice.

Your fields_for will need to look something like this

fields_for :documents, @shop.documents |ff_item|

stuff for whatever you need (text area’s checkboxes etc.)

end

If you want to access your data from your document in the fields_for loop, you can do “ff_item.object.DOCUMENT_METHOD”.

ff_item.object will be an instance of your document so you can set the default values for your html items.

Vinny

@agnellvj

The problem is that I want to add a new document when I am in the edit action.
In the form for edit I have all shop fields with their values and also
the document fields with their values.
I want the document fields blank so that I can insert new values and
add a document for the shop.