Rails turbolinks cassant pnotify

Dans mon application rails, je l’ai pour que lorsque vous votez, vous abonnez ou vous désabonnez d’une liste, une fenêtre contextuelle s’affiche à l’aide de pnotify.

Cela fonctionne correctement jusqu’à ce que l’utilisateur accède à une autre page. Désormais, cela ne fonctionne plus. Cela ne fonctionne que lorsque la page est chargée ou rechargée.

Je sais que c’est parce que turbolinks dans une application rails 4, mais il semble exécuter tous les autres codes javascript autres que pnotify.

Information additionnelle..

Les boutons subscribe / unsubscribe et vote ont la méthode post et sont exécutés à distance, ce qui signifie que j’ai un nom de fichier distinct, subscribe.js.erb, unsubscribe.js.erb et vote.js.erb, qui gèrent l’exécution du code javascript lorsque le l’utilisateur a cliqué sur les boutons.

Voici un exemple de la façon dont je crée un nouvel object pnotify:

new PNotify({ title: "Subscribed!", text: "", type: 'info', opacity: .8, animation: { effect_in: 'show', effect_out: 'slide' }, buttons: { sticker: false } }).get().click(function() { $(this).remove(); }); 

J’utilise aussi une gemme pour pnotify appelée gem 'pnotify-rails'

J’ai eu les mêmes problèmes, mais c’est parce que PNotify perd son contexte , comme vous pouvez le voir sur cette ligne, le plug-in atsortingbue le contexte à $ (‘body’), mais lorsque vous naviguez à l’aide de turbolink, le corps est remplacé. le contexte est perdu.

Qu’as tu besoin de faire?

Vous devez atsortingbuer le contexte dans la page d’événement de turbolink: load

 $(document).on('page:load',function(){ PNotify.prototype.options.stack = { dir1: "down", dir2: "left", push: "bottom", spacing1: 25, spacing2: 25, context: $("body") } });