Rails 4.x で TurbolinksとGoogleアナリティクスを共存させるには

Shunsuke Sawada

以前記事を書きましたが、そのアップデート版です。

以前の記事
Rails / Google Analytics が動きを止めた & なぜかURLが正常に取得できない | Workabroad.jp

  
単純でよかった。
下記は Google Analytics で生成されるコードですが、ほぼまんま使います。

erb
1
2
3
4
5
6
7
8
9
10
<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-000000-00', 'auto');
  ga('send', 'pageview');

</script>

実装

views/shared/analytics.html.erb
ga('send', 'pageview'); を削っただけ。

erb
1
2
3
4
5
6
7
8
9
<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-000000-00', 'your-website.com');

</script>

  
layouts/application.html.haml

haml
1
2
3
4
!!! 5
%html
  %head
    = render partial: 'shared/analytics'

  
みたいにして、

assets/javascripts/google_analytics.coffee

coffee
1
2
3
4
5
6
7
ready = ->
  if window.ga != undefined
    url = location.href.split('#')[0]
    ga('send', 'pageview', url)

$(document).ready(ready)
$(document).on('page:load', ready)

とすれば良いのかと。

  
Screen Shot 2015-12-12 at 10.16.23 AM

Chrome Inspector の Network で送信されているかどうか確認しましょう。
collect などと入力してフィルタリングすると分かりやすいです。
  
以上です。

Shunsuke Sawada

おすすめの記事

Railsを4.2にバージョンアップしたら、Vagrantのローカル開発環境にアクセスできなくなった問題
Railsのバリデーションエラー後にレイアウトが崩れるとき
acts-as-taggable-on タグを表示させる順番を決めたい