如何实现Rails应用程序的脚本?

时间:2016-02-01 04:09:33

标签: ruby-on-rails

我需要将HotJar代码添加到我的应用中。我是这样做的:

视图/服务/ _hotjar.html.erb

<script>
    (function(h,o,t,j,a,r){
        h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
        h._hjSettings={hjid:140457,hjsv:5};
        a=o.getElementsByTagName('head')[0];
        r=o.createElement('script');r.async=1;
        r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
        a.appendChild(r);
    })(window,document,'//static.hotjar.com/c/hotjar-','.js?sv=');
</script>

视图/布局/ application.html.erb

<head>
  .
  .
  <%= render partial: "services/google_analytics" %>
  <%= render partial: "services/hotjar" %>
</head>

这样HotJar只能在第一个打开的页面上工作(我不确定它,但是它不能正常工作)。您可能会看到我使用Google Analytic所做的相同的事情,但它运作良好,因为这是一个区别,它在每个页面上呈现此代码:

视图/布局/ application.html.erb

<body>
.
.
  <script>
    ga('send', 'pageview', '<%= request.path %>');
  </script>
</body>

我敢肯定,这不是正确的方法。但是怎么做呢?

2 个答案:

答案 0 :(得分:1)

Turbolinks使您的应用成为ajax单页。仅重新加载body,所有脚本和head保持不变。有关重新执行的代码的例外和选项,但无论如何,您不希望在每个页面导航上添加另一个script和hotjar代码。

Hotjar尚不支持此类应用(they say so here),因此要使其正常工作,您需要停用turbolink。

答案 1 :(得分:1)

对于turbolinks支持,可以在您的hotjar代码Hotjar on Single Page Apps

之后添加此代码段
<script>
  document.addEventListener("turbolinks:load", function(event) {
    hj('stateChange', '<%=request.referer%>');
  });
</script>