Turbolinks: Rails e Javascript

Se lavorate con Ruby on Rails, spesso vi sarete resi conto che insieme a Rails viene inserito nel pacchetto anche “Turbolinks”, una libreria di Ruby che gestisce i link html (<a></a> per capirci).

In sostanza invece di ricaricare tutta l’intera pagina, turbolinks usa ajax e sostituisce solo la parte che all’interno della pagina viene modificata. Per chi non sa che cos’è Ajax, è un sistema che permette a javascript di scaricare dei dati in background, mentre la pagina è già caricata.

Tutto ciò è molto utile per velocizzare i caricamenti, ma introduce un grande problema. Infatti, se utilizziamo jQuery: $(document) o $.ready() o più semplicemente $.() non verranno invocati al caricamento di una pagina in Ajax! E se invece non utilizziamo  jQuery, comunque non potremo capire da javascript il quando il caricamento della pagina sarà completato.

Ci vengono in aiuto due soluzioni: disabilitare turbolinks o l’evento page:load.

Maniera Drastica: disabilitare turbolinks per una pagina

Dovremo semplicemente inserire all’interno della pagina in cui vogliamo eliminare turbolinks il seguente tag, al posto del normale body:

<body data-no-turbolink>

</body>

Catturare l’evento page:load

Se invece vogliamo semplicemente essere in grado di capire quando il caricamento di una pagina è completato, basterà catturare l’evento page:load nel seguente modo con jQuery:

function load() {
  // codice
}
$(document).ready(load);
$(document).on("page:load", load);

In questo modo faremo avviare la funzione load ogni volta che l’utente carica una pagina nel modo classico, oppure tramite turbolinks.

Seguiteci anche su Facebook, Google Plus, Tumblr, Twitter e Telegram , per restare sempre in contatto con noi e con le nostre guide.



Cerca

Seguici

Live da Facebook
Live da Twitter
Seguici su Telegram
Canale InsiDevCode Telegram