eme*_*his 25 ruby google-analytics ruby-on-rails turbolinks ruby-on-rails-4
我想知道在Rails 4中实施Google Analytics跟踪代码以及turbo链接的最佳方法是什么.普通代码段是否有效?我也看过这个宝石,但我不确定它是做什么的.
sco*_*twb 28
我喜欢vladCovaliov的解决方案,因为似乎大多数新帐户默认使用Universal Analytics(在我看来这也是更好的功能).但是,我认为这个答案需要与其他建议相结合,这些建议会注释掉初始网页浏览,使用page:change事件和跟踪网页浏览,而不是事件.
例如,在你的<head>:
<% if Rails.env.production? %>
  <script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
    ga('create', 'UA-XXXXXXXX-X', 'auto');
    //ga('send', 'pageview');
  </script>
<% else %>
  <script>
    function ga () {
      var params = Array.prototype.slice.call(arguments, ga.length);
      console.log("GoogleAnalytics: " + params);
    };
  </script>
<% end %>
然后在js文件中通过资产管道加载:
$(document).on('page:change', function() {
  ga('send', 'pageview', window.location.pathname);
});
这将记录您使用或不使用Turbolinks加载的每个页面的综合浏览量.请注意,这window.location.pathname是必需的,否则您可以获取为所有后续页面加载加载的第一个页面的URL.(如果您想要:id从RESTful URL中删除路径段,这也为您提供了编辑报告URL的好地方.)
您也可以轻松致电:
ga('send', "event", category, action, label, count);
报告您网站中其他有趣的javascript事件的事件.
Ant*_*lad 14
我采用了一种不同的方法,我在一些网站上看到但是看起来很合理.
像往常一样将GA添加到标题中,但只需稍加修改即可trackPageview自动发生事件.
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-FOOBAR']);
  //_gaq.push(['_trackPageview']);
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>
然后将其添加到您的某处,body因为正在为turbolinks重新加载正文.
<% if Rails.env.production? %>
  <script>_gaq.push(['_trackPageview']);</script>
<% end %>
生产检查是可选的,但如果您正在积极开发,这是一种不用GA跟踪本地主机命中的好方法.另一个好处是你不必担心搞乱页面:更改或页面:加载绑定,你可以确信它可以在GA可跟踪的任何浏览器上工作,而不必担心双击或任何奇怪的东西.
vla*_*iov 13
我认为更好的想法是使用新的Universal Analytics(来自analytics.js文件).
通用分析解决方案
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', "#{GA_UA}", "#{GA_URL}");
  ga('send', 'pageview');
然后当你想发送一个事件时,你可以使用
<script> ga('send', "event", "#{category}", "#{action}", "#{label}", "#{count}"); </script>
小心将此代码渲染到正文中,而不是在头部.Turbo-links只替换身体.
而且要小心:
1)GA_URL需要匹配您网页的网址
2)事件实时显示,但在事件选项卡中,它们仅在24小时后显示
3)您的帐户的属性需要为"通用"才能使此解决方案正常运行
Universal Analytics文档:
https://support.google.com/analytics/answer/2790010?hl=en&ref_topic=2790009
快速浏览源代码显示,这个gem唯一能做的就是在资产管道中添加一些javascript
# google-analytics-turbolinks/lib/assets/javascripts/google-analytics-turbolinks.js.coffee
if window.history?.pushState and window.history.replaceState
  document.addEventListener 'page:change', (event) =>
    # Google Analytics
    if window.ga != undefined
      ga('set', 'location', location.href.split('#')[0])
      ga('send', 'pageview')
    else if window._gaq != undefined
      _gaq.push(['_trackPageview'])
    else if window.pageTracker != undefined
      pageTracker._trackPageview();
这里的所有都是它的.您可以使用gem或手动将此类代码段添加到您的javascript-assets中.
| 归档时间: | 
 | 
| 查看次数: | 8606 次 | 
| 最近记录: |