2015-02-17 53 views
0

我正在寻找将Google Analytics添加到我的Rails 4应用程序中,并阅读了有关Turbolinks的问题。Rails 4 Turbolinks和Google Analytics

我已经使用了以下的答案产生一个解决方法:

Google analytics with rails 4

下面的代码是从我下资产所创造的新analytics.js.coffee文件> JavaScript的

app/assets/javascripts/analytics.js 

// Coffee 
$(document).on 'page:change', -> 
if window._gaq? 
    _gaq.push ['_trackPageview'] 
else if window.pageTracker? 
    pageTracker._trackPageview() 

// Javascript 
$(document).on('page:change', function() { 
if (window._gaq != null) { 
    return _gaq.push(['_trackPageview']); 
} else if (window.pageTracker != null) { 
    return pageTracker._trackPageview(); 
} 
}); 

Views> Layouts> _footer.html.erb(我为加载代码设置的文件)

<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-837283948-1', 'myapplication.com'); 
    ga('send', 'pageview'); 

</script> 

然后我把下面的代码在我application.html.erb文件下查看>布局

<%= render 'layouts/footer' %> 

在application.html.erb文件渲染代码会导致应用程序崩溃,所以我猜我做错了什么。我遵循了指南,无法启动它。

谢谢你的时间和精力。

+0

你有没有考虑使用[谷歌分析-turbolinks宝石(https://开头github上。 COM/shukydvir /谷歌分析-turbolinks)? – spickermann 2015-02-17 21:04:34

+0

@spickermann不,我不知道这个解决方案。它与上面类似吗?如果我能够通过简单的代码更改来完成上述工作,那就太好了。期待你的想法。 – RubyMax 2015-02-17 21:15:44

+0

是的,它基本上是一样的。看看[源代码](https://github.com/shukydvir/google-analytics-turbolinks/blob/master/lib/assets/javascripts/google-analytics-turbolinks.js.coffee) – spickermann 2015-02-17 22:31:28

回答

0

那么,你做错了一件事是你使用两个版本的谷歌分析的代码。

在您的第一个代码示例中,您有_gaq.push(['_trackPageview']);行,它引用ga.js库中的旧_gaq全局变量。

在您的第二个代码示例中,您有ga('send', 'pageview');行,它引用analytics.js库中新的ga全局变量。

除此之外,跟踪Turbolinks浏览量的原因很难,因为Rails正在将您的应用程序从传统的请求响应 模型转换为单一页面应用程序模型。

我建议您阅读building single page apps with analytics.js上的开发人员指南,以获得有关如何正确执行此操作的概述。

...或者只是使用turbolinks宝石,如果你不希望有了解这种东西:)