# \[rails\] parametri form\_for

**URL:** <https://www.ruby-forum.com/t/rails-parametri-form-for/132653>\
**Category:** IT\
**Created:** [March 22, 2008, 4:01pm UTC](https://www.ruby-forum.com/t/rails-parametri-form-for/132653 "2008-03-22T16:01:31Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [March 22, 2008, 4:01pm UTC](https://www.ruby-forum.com/t/rails-parametri-form-for/132653/1 "2008-03-22T16:01:31Z")

</div>

Ciao! C’Ã¨ una cosa che non sono mai riuscito a capire fin’ora: in  
un’istruzione come questa:

\<% form\_for :person, @person, :url =\> { :action =\> “update” } do |f| %\>

il simbolo :person, a cosa serve? PerchÃ© non basta passare l’istanza  
@person?

Stando alla firma, che Ã¨ cosÃ¬:

form\_for(record\_or\_name\_or\_array, \*args, &proc)

sembrerebbe che:

record\_or\_name\_or\_array == :person;

\*args == @person, :url =\> { :action =\> “update” }

e poi c’Ã¨ il blocco.

Oppure:

record\_or\_name\_or\_array == :person, @person;

\*args == :url =\> { :action =\> “update” }

e poi il blocco.

Qualcuno sa spiegarmi? 🙂

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [March 22, 2008, 4:18pm UTC](https://www.ruby-forum.com/t/rails-parametri-form-for/132653/2 "2008-03-22T16:18:38Z")

</div>

On Mar 22, 2008, at 4:01 PM, Luca R. wrote:

> Ciao! C’è una cosa che non sono mai riuscito a capire fin’ora: in  
> un’istruzione come questa:
> 
> \<% form\_for :person, @person, :url =\> { :action =\> “update” } do |f|  
> %\>
> 
> il simbolo :person, a cosa serve? Perché non basta passare l’istanza  
> @person?

Se nelle route hai definito:

map.resources :people

allora ti basta scrivere:

\<% form\_for(@person) do |f| %\>

Se il controller e’ dentro un namespace “foo”:

\<% form\_for([:namespace, @person]) do |f| %\>

pero’ se non ricordo male questo metodo e’ scoraggiato, la versione  
“pulita” e’:

\<% form\_for(@person, :url =\> foo\_person\_path(@person) %\> do |f| %\>

Il symbol serve per esplicitare il nome usato all’interno del form nel  
caso non ti vada  
bene quello desunto dall’oggetto:

\<% form\_for(:tizio, @person) do |f| %\>  
\<%= f.text\_field(:name) %\>  
\<% end %\>

il textfield si chiamera’ “tizio[name]” invece di “person[name]”,  
utile se per esempio hai piu’ form nella pagina che aggiornano lo  
stesso tipo di modello.

S.
