# Collection\_select

**URL:** <https://www.ruby-forum.com/t/collection-select/69323>\
**Category:** IT\
**Created:** [September 20, 2006, 9:50am UTC](https://www.ruby-forum.com/t/collection-select/69323 "2006-09-20T09:50:13Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![BSMaffettone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e68b1a/32.png) [@BSMaffettone](https://www.ruby-forum.com/u/BSMaffettone)\
**Post date:** [September 20, 2006, 9:50am UTC](https://www.ruby-forum.com/t/collection-select/69323/1 "2006-09-20T09:50:13Z")

</div>

Buongiorno.  
Cerco di imparare Rails e Ruby sviluppando una applicazione che Ã¨ giÃ  
in produzione e risolvendo i problemi man mano che si presentano quindi  
non vi  
meravigliate se le mie domande nascondono una certa ignoranza.

Ho questo codice:

Paziente:

\<%=@patients = Patient.find(:all, :order =\> "cognome,nome") collection\_select("prescription", "patient\_id", @patients, :id, :cognome) %\> In questo modo la combo-box mi mostra i cognomi. Prima domanda come posso visualizzare nella combo-box cognome + nome ? Seconda domanda come posso filtrare dinamicamente l'intervallo di visualizzazione proposto nella combo? Es. Cognomi che iniziano per Maf ecc..

Certo di ricevere aiuto vi saluto  
BM

---

<div class="post-metadata">

**Author:** ![BSMaffettone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e68b1a/32.png) [@BSMaffettone](https://www.ruby-forum.com/u/BSMaffettone)\
**Post date:** [September 20, 2006, 10:04am UTC](https://www.ruby-forum.com/t/collection-select/69323/2 "2006-09-20T10:04:07Z")

</div>

> Ho questo codice:
> 
> Paziente:
> 
> \<%=@patients = Patient.find(:all, :order =\> "cognome,nome") collection\_select("prescription", "patient\_id", @patients, :id, :cognome) %\>

Io ho visto che di solito si mette il ‘find’ nel controller.

> In questo modo la combo-box mi mostra i cognomi.  
> Prima domanda  
> come posso visualizzare  
> nella combo-box cognome + nome ?

Forse qualcosa come @patients.map { |p| “#{p.nome}, #{p.cognome}” } ?

> Seconda domanda come posso filtrare dinamicamente l’intervallo di  
> visualizzazione proposto nella combo? Es. Cognomi che iniziano per Maf  
> ecc…

:conditions per il find? Dipende un po’ come vuoi gestire la cosa.

–  
David N. Welton

- [David N. Welton](http://www.dedasys.com/davidw/)

Linux, Open Source Consulting

- [http://www.dedasys.com/](http://www.dedasys.com/)

---

<div class="post-metadata">

**Author:** ![BSMaffettone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e68b1a/32.png) [@BSMaffettone](https://www.ruby-forum.com/u/BSMaffettone)\
**Post date:** [September 20, 2006, 11:52am UTC](https://www.ruby-forum.com/t/collection-select/69323/3 "2006-09-20T11:52:30Z")

</div>

Con questo funziona

Paziente:

\<%=@patients = Patient.find(:all, :order =\> "cognome,nome").map {|p| [p.cognome+' '+p.nome, p.id] } select(:prescription, :patient\_id, @patients) %\>

Rimane da capire come posso usare la collection\_select:

Paziente:

\<%=@patients = Patient.find(:all, :order =\> "cognome,nome") collection\_select("prescription", "patient\_id", @patients, :id, :cognome) %\>

BM

---

<div class="post-metadata">

**Author:** ![BSMaffettone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e68b1a/32.png) [@BSMaffettone](https://www.ruby-forum.com/u/BSMaffettone)\
**Post date:** [September 20, 2006, 10:38am UTC](https://www.ruby-forum.com/t/collection-select/69323/4 "2006-09-20T10:38:59Z")

</div>

Grazie per la risposta

> Io ho visto che di solito si mette il ‘find’ nel controller.

Dopo lo sposto.

> > come posso visualizzare  
> > nella combo-box cognome + nome ?

> Forse qualcosa come @patients.map { |p| “#{p.nome}, #{p.cognome}” } ?

rimanendo invariata la riga sotto  
collection\_select(“prescription”, “patient\_id”, @patients, :id,  
:cognome)

non vi Ã¨ la possibilitÃ di accodare a :cognome anche il valore di :nome  
?

:cognome Ã¨ il text\_method ?

ciao  
BM
