我将 GTM 包含在我<head>
的以下内容中:
<!-- Google Tag Manager -->
<script>
document.addEventListener('turbolinks:load', function(event) {
var url = event.data.url;
dataLayer.push({
'event':'pageView',
'virtualUrl': url
});
});
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');
</script>
<!-- End Google Tag Manager -->
并且在<body>
与
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
在我的页面上,我有一个link_to
使用 rails-ujs 从数据库中删除图像的助手。
<%= link_to "Delete", destroy_image_path(image), remote: true, method: "delete" %>
当我从页面中删除 GTM 代码时,删除链接按预期执行。
但是,使用 GTM 代码后,单击该链接会在尝试发出 GET 请求时导致路由错误。
No route matches [GET] "/..."
在我看来,GTM 正在干扰 rails-ujs,但我不确定最好的方法来解决这个问题。
编辑:我已经尝试使用和不使用 turbolinks:load 侦听器的代码,但结果相同。