- <head>要素内にトラッキングコードを置く(<body>に置いたスクリプトは毎回実行されるので二重に送信されてしまう)
- 以下のスクリプトを追加、もしくはgoogle-analytics-turbolinks gemを使う
google-analytics-turbolinks.js.coffee
$(document).on 'page:load page:restore', ->
# Universal Analyticsの場合
if window.ga?
ga('set', 'location', location.href.split('#')[0])
ga('send', 'pageview')
# 標準のアナリティクスの場合
if window._gaq?
_gaq.push(['_trackPageview'])
Turbolinksでページを読み込んだとき(とキャッシュから復元されたとき)page:changeイベントが発火するので、ここでPV送信メソッドを実行- page:changeは通常の遷移時にも発火してしまうため、
page:load page:restore
でTurbolinksでの遷移と履歴復元時にPV送信メソッドを実行する - Universal Analyticsではなぜか正しいパスが取得できず元のURLのまま送信されてしまうため、ga('set', 'location')を使ってlocationを指定することで対処した