J’utilise jQuery DataTables dans un nouveau projet Rails 4.2. J’ai un grand nombre de résultats qui doivent être filtrés par groupe, projet et statut. Le choix du groupe filtre la sélection de projet, via un aller-retour dans l’application, et la sélection de projet filtre le tableau de la même manière. J’enregistre le groupe et le projet dans les variables de session afin que, lorsque l’utilisateur change de page, puis clique sur le lien principal pour revenir, il se souvienne de sa sélection et les ramène à l’endroit où ils se trouvaient. Tout cela fonctionne comme je le souhaite.
Le problème est que l’utilisation du bouton Précédent du navigateur pour revenir à la table à partir d’une page différente entraînera un wrapper en double (avec des liens de zone de recherche, de liste déroulante du nombre d’éléments et de pagination) autour du DataTable.
J’ai ajouté le joyau jquery–turbolinks.
J’ai essayé de jouer avec les auditeurs d’événements , mais je ne peux pas faire fonctionner ces idées.
J’ai essayé de rendre le corps de la page exempt de Turbolinks avec data-turbolinks=false
.
J’ai essayé de changer l’événement que ma clé de script (s) a sur autre chose que $(document).ready()
, comme page:load
. Aucun d’entre eux ne l’empêche.
J’ai essayé de charger tous les scripts du DataTable exemptés de Turbolinks avec data-turbolinks-eval=false
dans cette page spécifique (avec content_for :head
).
La seule chose qui empêche la duplication de l’encapsuleur, c’est de supprimer simplement l’appel visant à inclure entièrement le JS turbolinks dans les actifs. Et j’aurais déjà fait cela si je ne connaissais pas les personnes plus intelligentes que je ne le pense, cela devrait faire partie de l’application. Je ne sais pas quoi faire. Je cherche le moyen élégant de gérer cela.
Ma table fonctionne comme prévu avec les parameters suivants.
Pour datatable.js
ou application.js
.
var dataTable = null document.addEventListener("turbolinks:before-cache", function() { if (dataTable !== null) { dataTable.destroy() dataTable = null } })
Pour voir.
..
Références: