Scaffold, aggiunta riferimenti a campi

Capita nelle tabelle di inserire i campi altratabella_id, sarebbe
simpatico, se, nello scaffold, apparisse una select box contenente

title.

(Il post sul Relational Scaffolding si riferiva a questo?)

Io ho aggiunto in _form.rhtml questo

Lingua

– <%= select_tag ‘language_id’, options_for_select( @lan ) %>

E nel controller rispettivo, nell’azione new, ho scritto
@languages = Language.find :all
– for lan in @languages do
@lan = {lan.title => lan.id}
– end

Però mi restituisce l’ultimo elemento. Non riesco a fare in modo che si
formi la lista delle coppie chiave-valore.
Avevo provato a sostituire la riga @lan=… con
@lan[lan.title]=lan.id
Ma poi mi restituisce l’errore relativo al fatto che l’oggetto è nil.

Scusate le mie banalità .

On 8/23/06, RobyOnRails [email protected] wrote:

Ma poi mi restituisce l’errore relativo al fatto che l’oggetto è nil.

Scusate le mie banalità.

Prova
così:- Controller:
@languages = Language.find_all

  • View
    <%= select ‘nome_del_tuo_oggetto’, ‘language_id’,
    @languages.collect{|lang| [lang.name, lang.id]} %>

non l’ho testato ma dovrebbe andare…

-pilu

Pilu wrote:

non l’ho testato ma dovrebbe andare…

Funzionare, funziona! Però com’è possibile continuare ad utilizzare
tutti quei simpatici metodi del tipo validates_presence_of ecc… anche
in form “modificati” come questo?

Quando invio un form volutamente incompleto, ottengo quest’errore:

You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.collect

come mai?

On 8/25/06, Andrea G. [email protected] wrote:

Pilu wrote:

non l’ho testato ma dovrebbe andare…

Funzionare, funziona! Però com’è possibile continuare ad utilizzare
tutti quei simpatici metodi del tipo validates_presence_of ecc… anche
in form “modificati” come questo?

in che senso? vuoi validare la scelta del linguaggio…nel modello
avrai un language_id…valida quello…

Quando invio un form volutamente incompleto, ottengo quest’errore:

Forse xkè devi aggiunger “@languages = Language.find_all” anche nel
metodo ‘create’…altrimenti non può visualizzare la lista di
linguaggi…