[rails] parametri form_for

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? :slight_smile:

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.

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