I'm going crazy with a nester form

class Shop < ActiveRecord::Base
has_many :documents
validates :name, :presence => true
accepts_nested_attributes_for :documents

class Document < ActiveRecord::Base
belongs_to :shop
validates :reference_number, :presence => true

The partial _form for shop is:

  • @shop.documents.build
    = simple_form_for(@shop) do |shop_f|
    = render ‘shared/error_messages’, :object => @shop

    = render :partial => ‘documents/form’, :locals => { :form => shop_f }

    = field_set_tag t(‘shop’) do
    .inputs
    = shop_f.input :role_number
    = shop_f.input :role_date
    = shop_f.input :name

the partial _form for document is:

= form.simple_fields_for :documents do |document_f|
= field_set_tag t(‘document’) do
.inputs
= document_f.input :reference_number

When I submit the form with no values in shop name or document
reference_number I have the errors messages and it is correct but in
the page I have the shop form with two document form.
Why the two document forms?
Sorry for my bad english hope my problem is clear.

On May 6, 10:42pm, Mauro [email protected] wrote:

class Shop < ActiveRecord::Base
has_many :documents
validates :name, :presence => true
accepts_nested_attributes_for :documents

class Document < ActiveRecord::Base
belongs_to :shop
validates :reference_number, :presence => true

So your shop starts out as a brand new shop on in the new action, with
0 shops.

The new form gets rendered,

The partial _form for shop is:

  • @shop.documents.build

the shop now has 1 document. You then submit the form, which creates a
shop with one document, (albeit with errors). because there are
errors, you render the form, and since the form unconditionally does
@shop.documents.build, a second document is created.
If I were you I’d be calling that in the controller, and only when
desirable

Fred

On 6 May 2011 23:53, Frederick C. [email protected]
wrote:

validates :reference_number, :presence => true

the shop now has 1 document. You then submit the form, which creates a
shop with one document, (albeit with errors). because there are
errors, you render the form, and since the form unconditionally does
@shop.documents.build, a second document is created.
If I were you I’d be calling that in the controller, and only when
desirable

Oh great, thank you very much I were going crazy.
Yes I put @shop.document.build in the controller now.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs