Usare un solo form per diversi modelli

Salve, ho:

Customer
has_many :deliveries
has_one :document

Document
belongs_to :customer

Delivery
belongs_to :customer

route.rb has:

resources :customers do
resources :deliveries
end

La tabella customers e’ gia’ popolata, voglio solo assegnare una
delivery e un document a un customer.
Vorrei farlo utilizzando un solo form ma:

<%= form_for([@customer, @delivery]) do |f| %>
<%= f.input :delivered_at, :as => :hidden, :value => Date.today %>
<%= f.fields_for :document do |doc| %>
<%= doc.label :doc_type %>
<%= doc.text_field :doc_type %>
<%= doc.error :doc_type %>
<% end %>
<%= f.submit %>

Non funziona, posso aggiungere una delivery ma non un document
contemporaneamente.

Qualche suggerimento?

E’ da un po’ che non lo vedo ma questo potrebbe essere un indizio:

Maurizio

2011/2/3 Mauro [email protected]:

2011/2/3 maurizio de magnis [email protected]:

E’ da un po’ che non lo vedo ma questo potrebbe essere un indizio:

#196 Nested Model Form Part 1 - RailsCasts

L’avevo gia’ visto ma nel mio caso non funziona, forse dovrei correggere
il

<%= form_for([@customer, @delivery]) do |f| %> e la route.
Non mi crea il documento perche’ va a cercare l’attributo sul modello
Delivery.
In pratica dovrei poter fare customer.deliveries.build…e
contemporanemente customer.build_document.

2011/2/3 maurizio de magnis [email protected]:

E’ da un po’ che non lo vedo ma questo potrebbe essere un indizio:

#196 Nested Model Form Part 1 - RailsCasts

Ho trovato per caso la soluzione.

il form iniziale:
<%= form_for([@customer, @delivery]) do |f| %>
<%= f.input :delivered_at, :as => :hidden, :value => Date.today %>
<%= f.fields_for :document do |doc| %>
<%= doc.label :doc_type %>
<%= doc.text_field :doc_type %>
<%= doc.error :doc_type %>
<% end %>
<%= f.submit %>

diventa:

<%= form_for([@customer, @delivery]) do |f| %>
<%= f.input :delivered_at, :as => :hidden, :value => Date.today %>
<%= fields_for @document do |doc| %>
<%= doc.label :doc_type %>
<%= doc.text_field :doc_type %>
<% end %>
<%= f.submit %>

Il punto e’ il fields_for che non va associato alla variabile f.
Cosa ne pensate?