2015-02-17 91 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寶石,如果你不希望有了解這種東西:)