Rails turbolinks打破了pnotify

在我的rails应用程序中,我有它,以便当您投票,订阅或取消订阅列表时,它将显示使用pnotify的弹出窗口。

这工作正常,直到用户导航到另一个页面,现在它不再工作。 这仅在加载或重新加载页面时有效。

我知道这是因为在rails 4应用程序中turbolinks但它似乎执行除了pnotify之外的所有其他javascript代码。

附加信息..

订阅/取消订阅和投票按钮具有方法post并远程执行,这意味着我有一个单独的文件名subscribe.js.erb,unsubscribe.js.erb和vote.js.erb,用于处理javascript代码的执行时用户点击了按钮。

这是我如何创建一个新的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(); }); 

我也在使用一个名为'pnotify-rails' pnotifygem

我遇到了同样的问题,但是发生这种情况是因为PNotify失去了它的上下文 ,你可以在该行中看到插件将上下文分配为$(’body’),但是当你使用turbolink导航时,主体被替换为所以背景丢失了。

你需要做什么?

您需要在turbolink的事件’page:load’中分配上下文

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