Template RJS, differenza tra replace e replace_html
Posted by Dibi Store Fri, 28 Sep 2007 08:59:00 GMT
Inizio oggi una nuova serie di articoli che si baseranno sui template RJS.
Questi particolari template, vengono usati spesso in ruby on rails, e quando vengono richiamati, restituiscono automaticamente un content-type uguale a text/javascript. Sono quindi l'ideale nelle nostre pagine dinamiche che usano Ajax.
Il vantaggio di questi template, è che possiamo aggiornare più elementi nella stessa pagina con un unica chiamata, di seguito illustro un esempio, per capire meglio il concetto. Notate che non serve specificare l'azione nel controller, in quanto rails è ebbastanza intelligente da capire di richiamare il file.
Index.rhtml
<div id="primoDiv">Testo uno</div>
<div id="secondoDiv">Testo due</div>
<= link_to_remote 'Aggiorna', :url => {:action => 'aggiorna'} %>
aggiorna.rjs
page[:primoDiv].innerHTML = 'Aggiornato il primo div'
page[:secondoDiv].innerHTML = 'Aggiornato il secondo div'
Come già detto, non serve specificare l'azione nel controller. L'esempio è auto esplificativo e non dovrebbero esser necessari ulteriori chiarimenti. Notate invece che nell'helper link_to_remote non è stato necessario specificare l'opzione update.
Differenza tra replace e replace_html
Una delle tante funzioni utilizzabili con i template rjs è replace. Tuttavia non tutti conoscono a priori la differenza tra replace e replace_html, per qui è bene chiarire un attimo le idee.
Replace prende come parametro un id, e sostituisce tutto l'elemento, per qui anche gli eventuali tag di inizio e fine. Replace_html invece funziona come innerHTML e lascia invariati i tag di inizio e di fine.

