# Search contoller o search action?

**URL:** <https://www.ruby-forum.com/t/search-contoller-o-search-action/152581>\
**Category:** IT\
**Created:** [November 5, 2008, 10:51am UTC](https://www.ruby-forum.com/t/search-contoller-o-search-action/152581 "2008-11-05T10:51:01Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [November 5, 2008, 10:51am UTC](https://www.ruby-forum.com/t/search-contoller-o-search-action/152581/1 "2008-11-05T10:51:01Z")

</div>

Salve,  
una domanda di tipo stilistico…

Avendo una risorsa Pepole, e dovendo eseguire una ricerca avanzata, è  
meglio usare un’azione search nello stesso controller o usare un  
controller singleton Search?  
Io pendo per la seconda, ma mi interessava sapere cosa ne pensa la  
cooommunity.

Ciao a tutti,

---

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [November 5, 2008, 11:17am UTC](https://www.ruby-forum.com/t/search-contoller-o-search-action/152581/2 "2008-11-05T11:17:06Z")

</div>

Se consideri controller REST, una ricerca gia’ per la sua natura (a meno  
di non essere particolarmente semplice) non si immerge agevolmente nello  
schema REST della risorsa “da cercare”, per cui la ricerca dovrebbe  
essere considerata essa stessa una nuova risorsa (talora anche piu’ di  
una sola risorsa).

Ma anche al di fuori della visione REST, se la ricerca include  
differenti interazioni con il server io preferisco lasciarla ad un  
controller dedicato.

---

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [November 5, 2008, 11:58am UTC](https://www.ruby-forum.com/t/search-contoller-o-search-action/152581/3 "2008-11-05T11:58:20Z")

</div>

2008/11/5 Claudio Petasecca D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Se consideri controller REST, una ricerca gia’ per la sua natura (a meno  
> di non essere particolarmente semplice) non si immerge agevolmente nello  
> schema REST della risorsa “da cercare”, per cui la ricerca dovrebbe  
> essere considerata essa stessa una nuova risorsa (talora anche piu’ di  
> una sola risorsa).

mi pare invece che la ricerca si adatti bene alla “visione” REST 🙂

Nel caso di ricerca degli elementi di un singolo modello (e.g. Person) i  
risultati della ricerca non sono altro che un sottoinsieme delle  
risorse,  
ovvero una lista filtrata con dei parametri. In un controller RESTful la  
ricerca sarebbe semplicemente la action index a cui possono essere  
passati  
dei parametri (e.g. GET /people?name=Tizio ritorna una lista di risorse  
del  
modello Person che hanno come nome ‘Tizio’).

Il caso di ricerche su vari modelli i cui risultati devono essere visti  
assieme, puo’ costituire un’eccezione in cui e’ utile separare la  
funzione  
di ricerca in un diverso controller, ma sono casi limitati e molto  
spesso se  
si vuol rimanere nel “modello REST” e ci si trova a dover fare delle  
operazioni su risorse eterogenee (e.g. ricerca su persone e aziende) e’  
utile domandarsi se non “manca” una risorsa. La “risorsa mancante”  
potrebbe  
essere ad esempio un generico “risultato della ricerca” (N.B. risorsa !=  
modello).

ciao,  
Luca

---

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [November 5, 2008, 12:20pm UTC](https://www.ruby-forum.com/t/search-contoller-o-search-action/152581/4 "2008-11-05T12:20:35Z")

</div>

Io uso una cosa del tipo (classico esempio di Post come risorsa):

/posts?q=foo+bar&page=2  
/posts.xml?q=foo+bar&page=2

2008/11/5 Fabrizio R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [November 5, 2008, 12:17pm UTC](https://www.ruby-forum.com/t/search-contoller-o-search-action/152581/5 "2008-11-05T12:17:04Z")

</div>

Infatti usare un’azione ‘search’ non avrebbe senso. Si usa index e si  
filtra con dei parametri.  
Non è una soluzione meno elegante dell’altra, nè meno solida dal punto  
di vista del paradigma REST.  
E’ quello che avviene quando si usa will\_paginate, tutto sommato.  
Tuttavia un search controller generico lascia più spazio a sviluppi  
futuri.

Il giorno 05/nov/08, alle ore 11:58, Luca M. ha scritto:
