TurbolinksはPjax(pushState + Ajax)を実現するためのライブラリで、Rails 5では標準で有効になっています。Turbolinksを使うと、ページ遷移時に画面全体の読み込みが行われないため、SPAにしなくても、非常にスムーズな操作性を実現することができます。
ただ、Turbolinksを利用している場合、ページ遷移時にGoogle Tag Manager(以下GTM)のページビューイベントが発火しません。
発火させるためには、次のJavascriptのコードを利用します。
document.addEventListener('turbolinks:render', function() {
dataLayer.push({
'event': 'pageview',
'virtualUrl': window.location.pathname
});
});
ページ遷移時に無名関数が実行され、GTMのスクリプトによって定義されたdataLayer配列にpageviewイベントを挿入することで、GTMにイベントが送られます。
GTM上でこのイベントをキャッチするには、新たなトリガーを作成する必要があります。トリガーのタイプを「カスタム イベント」とし、イベント名には先ほど指定した「pageview」というイベント名を指定します。(コードと同じであれば別のイベント名でもOK)
作成したトリガーを「配信トリガー」として、必要なタグに割り当てれば完了です。