Semplici Select Box in Ruby on Rails

rails Stiamo scrivendo una applicazione in RoR e abbiamo bisogno di una Select Box (casella di selezione) in un nostro form? Niente di più semplice!

Possiamo infatti caricare l'elenco dei valori della Select Box direttamente dai dati associati ad un modello.

Immaginiamo di essere nella seguente situazione:

  • Abbiamo a disposizione un modello Automobile che permette di gestire le coppie nome/cilindrata
  • vogliamo caricare nel nostro form il dato relativo alla cilindrata e per fare ciò vogliamo usare una Select Box che visualizza l'elenco delle automobili
  • Il form ha nome: form

Possiamo scrivere il seguente codice:

<%= form.select :automobile_selezionata,
  Automobile.find(:all).collect {
    |automobile| [
      automobile.nome,
      automobile.cilindrata
    ]
  }
%>

Nella prima riga specifichiamo che all'interno del form si inserisce una casella di selezione (select) che memorizzerà il dato in una variabile di nome automobile_selezionata. Solitamente questa variabile sarà associata ad una proprietà di un oggetto nel quale salveremo i dati immessi nel form.

Le rimanenti righe di codice sono molto semplici da capire. Il metodo find() applicato alla classe Automobile banalmente effettua una ricerca in tutte le automobili grazie al parametro all. Il metodo collect() infine restituisce una collezione di oggetti automobile dai quali si estrapola un vettore con le coppie nome/cilindrata.
Per convenzione il primo valore di queste coppie sarà quello mostrato nella Select Box, il secondo invece è quello che viene memorizzato nel campo automobile_selezionata.

fatto?

Fatto!?!?

A me piaceva di più "Nils l'artista", soprattutto quando faceva i disegni con la polvere bianca o nera su un pavimento completamente nero o bianco, rispettivamente. ;)

Ti sta acchiappando parecchio sto ruby eh?

Altrochè! E' semplicemente fantastico :-)

Fai un giro qui... che figata!

Mi sembrava ci fosse qualcosa di simile anche nel sito ufficiale di Ruby. :-)

tu sai come smontarmi!

Sono vicino al completare il magazzino multimediale in postgres+rails+active_scaffold
Per la seconda versione farò l'interfaccia in flex :D

Magazzino multimediale? Di cosa si tratta?

uno degli aspetti + belli di rails è la gestione del database ad oggetti con polimorfismo attraverso l'attributo :as

Ora tu puoi dire che il tuo magazzino contiene :media (plurale di :medium, dannata convenzione) e :books, :films e :other_stuff
sono definite per polimorfismo.
Nei collegamenti (has_one, habtm e belongs_to) propri del medium nei polimorfici troverai l'attributo come :as => :medium

Geniale! :D

Usi qualche IDE particolare per sviluppare in Rails?

Io sviluppo con RadRails (leggesi Aptana Studio (leggesi Eclipse workbench) con plugin per rails)

Mi trovo bene, anche non ti aiuta affatto nella creazione del codice.

La nuova versione di NetBeans (la 6) ha un pacchetto per lo sviluppo in JRuby integrato che ti aiuta in tutto e per tutto
(leggesi software da scimmia, che nemmeno una scimmia vorrebbe utilizzare)

Prova entrambi e dimmi.

Ho provato a provare RadRails, ma non ho approfondito, la prossima settimana ci ritorno e poi ti dirò.