[ruby-it] Models multipli in un form

Pietro Giorgianni giorgian a gmail.com
Mar 2 Mar 2010 12:28:47 CET


Il 02 marzo 2010 12.16, Paola Andriani <nuvola a elbalink.it> ha scritto:
> <%= builder.collection_select(:amministration, :land_id, @lands, :id, {:prompt => "select territorio"}) %>
>
> Fatto tutto ciò mi da errore "undefined method `map' for
> :land_id:Symbol"
> Come ne esco? Dove ho sbagliato?

Parto dalla fine, scusa ma ora non posso ricontrollare tutto.

Qui l'errore è che stai passando un parametro di troppo, cioè :amministration.

I form helper, infatti, possono essere usati o "da soli", ad esempio
<%= text_field :object, :method %>

oppure associati all'oggetto form_for o fields_for:
<%= f.text_field :method %>

Nel secondo caso non è necessario specificare l'oggetto.

Quel messaggio di errore, undefined method map for :land_id:Symbol,
significa che ha provato a trattare l'oggetto :land_id (che è un
Symbol) come un array (il metodo map è un metodo di array).

In questo caso dovresti usare qualcosa tipo:
<%= builder.collection_select(:land_id, @lands, :id, :denominazione,
{:prompt => "select territorio"}) %>

Ovvero:
:land_id è il nome del campo;
@lands è la collezione di oggetti da usare per riempire la select;
:id è il metodo di Land da usare come valore della select (e in
effetti quello che ti serve nel form è l'id);
:denominazione è il metodo di Land da usare per mostrare ciò che deve
apparire all'utente per ogni scelta.


pietro


More information about the Ml mailing list