àˆ passato qualche giorno ormai e non ricordo come l'ho scoperto, ad ogni modo poco importa.
Conoscete il metodo ActionController#respond_to? Lasciatemelo dire, è uno spettacolo!
Sul blog Raaum trovate una breve ma significativa panoramica. Sostanzialmente, il metodo fornisce indicazione su quale risposta si aspetta il client: in questo modo potete supportare differenti risposte e template con uno stesso controller.
Il blog Raaum fornisce un esempio usando una versione html o restituendo un feed, a seconda del tipo di richiesta.
def show @monkey = Monkey.find(params[:id]) respond_to do |format| # format.html with no block returns the default format.html format.xml { render :xml => @monkey.to_xml } end end
Ma questa non è l'unica applicazione. Ad esempio, posso verificare se la richiesta è format.js
o format.html
. Nel primo caso restituirà la lista degli ultimi post in html, nel secondo caso è una richiesta AJAX dunque li fornirà in JSON.
Prima di concludere, vi lascio con un ultimo dettaglio: format.all
significa qualsiasi richiesta e può essere usato come condizione "else".