Accept_nested_attributes ma cosa manca?

class Shop < ActiveRecord::Base
has_many :documents
default_scope :order => ‘updated_at DESC’
validates :name, :state, :presence => true
accepts_nested_attributes_for :documents

il form di shop e’:

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

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

= field_set_tag t(‘shop’) do
.inputs
= shop_f.input :role_number
= shop_f.input :role_date, :as => :string, :input_html => {
:class => ‘id_date’ }
= shop_f.input :name

il partial di documents/form e’:

= f.simple_fields_for :documents do |document_f|
= field_set_tag t(‘document’) do
.inputs
= document_f.input :reference_number
= document_f.input :reference_date, :as => :string, :input_html
=> { :class => ‘id_date’ }
= document_f.input :subject

Nel controller di shop ho semplicemente:

def new
@shop = Shop.new
#@document = @shop.documents.build
end

Il problema e’ che nel form non vedo i campi relativi a document a
meno che non decommenti #@document = @shop.documents.build, pensavo
non servisse dal momento che uso accept_nested_attributes_for
:documents.
Se decommento #@document = @shop.documents.build nel form vedo i
campi relativi a document e posso costruire il document anche se non
uso accept_nested_attributes.
Ma allora quest’ultimo a cosa serve.

On Fri, Jun 24, 2011 at 11:23 PM, Mauro [email protected] wrote:

def new
@shop = Shop.new
#@document = @shop.documents.build
end

prova a passargli l’hash:

@shop = Shop.create(params[:shop])

Ciao
Stefano

On 27 June 2011 15:58, Stefano P. [email protected]
wrote:

@shop = Shop.create(params[:shop])

Come create, come create mica posso preparare il form.

On Mon, Jun 27, 2011 at 4:11 PM, Mauro [email protected] wrote:

Come create, come create mica posso preparare il form.

scusa avevo letto troppo velocemente e ho scritto una minchiata :slight_smile:

quello che indichi il comportamento corretto. fields_for itera sulla
collezione che gli passi e crea i sub forms necessari. Peccato che con
Shop.new .documents vuoto quindi ti tocca riempirlo in qualche modo.

On Mon, Jun 27, 2011 at 3:58 PM, Stefano P.
[email protected]wrote:

@shop = Shop.create(params[:shop])

Ciao
Stefano

Scusa ho scritto una cazzata. Ho letto troppo velocemente :slight_smile:

fields_for itera su tutti gli elementi che trovi in quella collezione, e
quando crei lo Shop vuoto lo