Ruby on rails RubyonRails页面最初为空,但在刷新时正确加载 -主页加载良好 尝试单击任何页脚链接(联系人、启动者、启动者等),注意页面没有加载 单击浏览器中的F5或“重新加载”按钮,请注意它现在可以正常加载

Ruby on rails RubyonRails页面最初为空,但在刷新时正确加载 -主页加载良好 尝试单击任何页脚链接(联系人、启动者、启动者等),注意页面没有加载 单击浏览器中的F5或“重新加载”按钮,请注意它现在可以正常加载,ruby-on-rails,Ruby On Rails,这很奇怪。有什么想法吗 我还应该注意到,它在我们开发人员的本地机器上运行良好,只是不在实时站点上运行。这个问题几乎肯定是我们的问题 Turbolinks问题的典型定义是,如果它只在单击链接时发生(即“不在刷新时”),它将由Turbolinks引起。我马上解释原因,但首先,让我们看看问题是什么: 错误 我点击了页脚链接,页面确实变成了空白 有趣的是,它显示页面的元素已被删除: 现在几乎可以肯定这是一个Turbolinks错误(我将在下面解释)。那么是什么原因造成的呢 可能有很多原因,但突出的一

这很奇怪。有什么想法吗


我还应该注意到,它在我们开发人员的本地机器上运行良好,只是不在实时站点上运行。

这个问题几乎肯定是我们的问题

Turbolinks问题的典型定义是,如果它只在单击链接时发生(即“不在刷新时”),它将由Turbolinks引起。我马上解释原因,但首先,让我们看看问题是什么:


错误

我点击了页脚链接,页面确实变成了空白

有趣的是,它显示页面的
元素已被删除:

现在几乎可以肯定这是一个Turbolinks错误(我将在下面解释)。那么是什么原因造成的呢

可能有很多原因,但突出的一个原因是您在
元素中直接包含了
标记:

我相信这可能就是问题所在。这或者没有正确结束您的
标记,都会导致TurboLink出现故障。解决这一问题的方法将是使您的标签更加清晰,从而确保您的所有标签都井然有序

下面是我如何修复它的:

--

修复

首先,将您的Javascript放入您的:

为混合使用JQuery和JS表示歉意-我觉得强调一个事实是正确的,即您需要将它保持为仅在请求开始时加载。查看PikWik代码本身,它似乎会在页面上附加一个
脚本
标记,这意味着如果您希望它与TurboLink一起工作,则必须在页面加载过程的一开始就完成

这将与您一起确保正确关闭
标签


涡轮链接

给你一个关于Turbolinks为什么有问题的想法,你会考虑它是如何工作的:

Turbolinks使web应用程序中的以下链接更快。 而不是让浏览器重新编译JavaScript和CSS 在每次页面更改之间,它将保持当前页面实例处于活动状态,并且 仅替换正文和标题中的标题。想想CGI vs 持久过程

这基本上意味着每次加载带有TurboLink的页面时,它只会加载新页面的
标记,而保持
不变

问题是,如果您希望加载的
标记中有任何动态脚本,则会导致冲突。这就是我认为在这里发生的事情——你可以通过上面的建议来解决

#app/assets/javascripts/application.js
//Pikwik
var pikwik = function() {
   var pkBaseURL = (("https:" == document.location.protocol) ? "https://statsbox.info/" : "http://statsbox.info/");

    document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));

    try {
       var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 25);
       piwikTracker.trackPageView();
       piwikTracker.enableLinkTracking();
    } catch( err ) {}
};

$(document).on("page:load ready", pikwik);