# Usare un solo form per diversi modelli

**URL:** <https://www.ruby-forum.com/t/usare-un-solo-form-per-diversi-modelli/202697>\
**Category:** IT\
**Created:** [February 3, 2011, 8:57pm UTC](https://www.ruby-forum.com/t/usare-un-solo-form-per-diversi-modelli/202697 "2011-02-03T20:57:27Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![luislavena](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/0ea827/32.png) [@luislavena](https://www.ruby-forum.com/u/luislavena)\
**Post date:** [February 3, 2011, 8:57pm UTC](https://www.ruby-forum.com/t/usare-un-solo-form-per-diversi-modelli/202697/1 "2011-02-03T20:57:27Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [February 3, 2011, 9:11pm UTC](https://www.ruby-forum.com/t/usare-un-solo-form-per-diversi-modelli/202697/2 "2011-02-03T21:11:55Z")

</div>

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

> **[\#196 Nested Model Form Part 1 - RailsCasts](http://railscasts.com/episodes/196-nested-model-form-part-1)**
>
> Short Ruby on Rails screencasts containing tips, tricks and tutorials. Great for both novice and experienced web developers.

Maurizio

2011/2/3 Mauro [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [February 3, 2011, 9:23pm UTC](https://www.ruby-forum.com/t/usare-un-solo-form-per-diversi-modelli/202697/3 "2011-02-03T21:23:16Z")

</div>

2011/2/3 maurizio de magnis [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> E’ da un po’ che non lo vedo ma questo potrebbe essere un indizio:
> 
> [http://railscasts.com/episodes/196-nested-model-form-part-1](http://railscasts.com/episodes/196-nested-model-form-part-1)

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.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [February 3, 2011, 10:46pm UTC](https://www.ruby-forum.com/t/usare-un-solo-form-per-diversi-modelli/202697/4 "2011-02-03T22:46:25Z")

</div>

2011/2/3 maurizio de magnis [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> E’ da un po’ che non lo vedo ma questo potrebbe essere un indizio:
> 
> [http://railscasts.com/episodes/196-nested-model-form-part-1](http://railscasts.com/episodes/196-nested-model-form-part-1)

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?
