# Forse si puo' fare di meglio

**URL:** <https://www.ruby-forum.com/t/forse-si-puo-fare-di-meglio/161774>\
**Category:** IT\
**Created:** [March 2, 2009, 10:56am UTC](https://www.ruby-forum.com/t/forse-si-puo-fare-di-meglio/161774 "2009-03-02T10:56:58Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [March 2, 2009, 10:56am UTC](https://www.ruby-forum.com/t/forse-si-puo-fare-di-meglio/161774/1 "2009-03-02T10:56:58Z")

</div>

Ho un form con 4 campi per una ricerca.  
Tale ricerca va effettuata in base al contenuto dei campi ed e’  
diversa a seconda di quali campi sono valorizzati, es:  
Se solo il campo nome e’ valorizzato la ricerca va effettuata su tutti  
per nome;  
se solo il campo indirizzo e’ valorizzato la ricerca va fatta su tutti  
solo per indirizzo;  
se solo i campi nome e indirizzo sono valorizzati la ricerca va fatta  
su tutti per nome e indirizzo assieme, e cosi’ via.  
La soluzione che sto adottando e’ utilizzare una serie di if elsif  
nell’action del controller…ma forse potete suggerirmi una  
soluzione piu’ elegante anche perche’ i campi della mia form sono solo  
4 ma se dovessero essercene di piu’ tutte quelle if non penso siano il  
massimo dell’eleganza.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [March 2, 2009, 11:05am UTC](https://www.ruby-forum.com/t/forse-si-puo-fare-di-meglio/161774/2 "2009-03-02T11:05:11Z")

</div>

Il 2 marzo 2009 10.56, Mauro [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> soluzione piu’ elegante anche perche’ i campi della mia form sono solo  
> 4 ma se dovessero essercene di piu’ tutte quelle if non penso siano il  
> massimo dell’eleganza.

i campi sono text\_field?

è una query like?

dicci qualcosa in  
più.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [March 2, 2009, 11:06am UTC](https://www.ruby-forum.com/t/forse-si-puo-fare-di-meglio/161774/3 "2009-03-02T11:06:58Z")

</div>

2009/3/2 Pietro G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > nell’action del controller…ma forse potete suggerirmi una  
> > soluzione piu’ elegante anche perche’ i campi della mia form sono solo  
> > 4 ma se dovessero essercene di piu’ tutte quelle if non penso siano il  
> > massimo dell’eleganza.
> 
> i campi sono text\_field?

i campi sono due text fiels e due select.

> è una query like?

Per i campi nome e indirizzo si.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [March 2, 2009, 12:18pm UTC](https://www.ruby-forum.com/t/forse-si-puo-fare-di-meglio/161774/4 "2009-03-02T12:18:10Z")

</div>

2009/3/2 Mauro [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > i campi sono text\_field?
> 
> i campi sono due text fiels e due select.
> 
> > è una query like?
> 
> Per i campi nome e indirizzo si.

per le select:

conditions = {}

conditions[:qualchecosa\_id] = params[:qualchecosa\_id] if  
params[:qualchecosa\_id]  
conditions[:unaltracosa\_id] = params[:unaltracosa\_id] if  
params[:unaltracosa\_id]

che è equivalente a:

for key in [:qualchecosa\_id, unaltracosa\_id]  
conditions[key] = params[key] if params[key]  
end

per le query like, spero che qualcun altro intervenga con un’idea  
migliore, ma intanto la cosa più pulita che mi viene in mente è usare  
dei named\_scope…

pietro
