Forse si puo' fare di meglio

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.

Il 2 marzo 2009 10.56, Mauro [email protected] 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ù.

2009/3/2 Pietro G. [email protected]:

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.

2009/3/2 Mauro [email protected]:

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