使用Rails 4集成Google Analytics

38

我在实现谷歌分析到我的Rails 4项目时遇到了一些困难。我把跟踪代码放在了布局文件的底部,并尝试根据此处的建议删除了Turbolinks,但谷歌仍然无法检测到这个跟踪cookie。有什么想法吗?


1
尝试在Firefox中安装Omnibug Firebug插件。如果您在页面上安装了GATC,则此插件将轻松显示发送到Google的请求。https://addons.mozilla.org/En-us/firefox/addon/omnibug/。如果您看不到任何内容被发送,请检查浏览器中的JavaScript错误控制台,因为您可能有JS错误。 - crmpicco
http://readysteadycode.com/howto-access-the-google-analytics-api-with-ruby - maurymmarques
6个回答

79

几天前我设置了谷歌分析..

1.) Turbolink的解决方案

使用Turbolinks时,仅使用Google Analytics JavaScript库无法记录每个页面更新的访问量。

需要在每个页面上加载解决方案,可以将其作为应用程序范围的资源进行包含(它将在Turbolinks之前加载)。

添加文件app/assets/javascripts/analytics.js.coffee以包含Turbolinks的解决方案:

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();
 }
});

2.) 创建页脚部分

app/views/layouts目录下创建一个局部文件 -> _footer.html.erb

然后在你的application.html.erb中调用你的局部文件 -> <%= render 'layouts/footer' %>

将Analytics跟踪代码插入到页脚中:

<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-XXXXXXX-XX', 'herokuapp.com');
  ga('send', 'pageview');

</script>

您需要将跟踪ID中的UA-XXXXXXX-XX替换为您自己的跟踪ID,并且如果您有任何域名,则需要将herokuapp.com替换为您的域名。


1
浏览了一些你的Rails答案...做得好TMJ :) - zx81
1
实际上完全不是这样。Track代码是在设置新站点时提供的,而Turbolink Workaround则来自另一个示例。 - Mini John
这里出现了一个问题,该方法在开发环境下可用但在生产环境中不行。我应该检查关于默认的Rails 4生产环境的内容,可能会破坏这个设置吗? - Laurent
这两个是独立的解决方案还是一个解决方案的两个步骤?我有点困惑。 - ZK Zhao
1
嘿@cqcn1991,这是将Google Analytics与您的Rails应用程序配合使用的两个步骤。 - Mini John
显示剩余5条评论

12

这是不使用 Coffeescript 的代码:

app/assets/javascripts/analytics.js

$(document).on('page:change', function() {
 if (window._gaq != null) {
  return _gaq.push(['_trackPageview']);
 } else if (window.pageTracker != null) {
  return pageTracker._trackPageview();
 }
});

3
我使用了这个宝石,非常容易设置,不需要创建额外的.js文件。 Rails 3助手管理Google Analytics跟踪。主要用于中小型网站。 只需安装这个宝石:
gem 'google-analytics-rails', '1.1.0'

然后运行:
bundle install

最后,这是关于生产环境配置的内容:

仅适用于生产环境 config/environments/production.rb:

# replace this with your tracker code
GA.tracker = "UA-112233-4"

<head>标签中的app/views/layout/application.html.erb文件:

<%= analytics_init if GoogleAnalytics.valid_tracker? %>

我在将代码推送到Heroku后立即看到了结果。


2
我去掉了Turbolinks,并使用了此处提供的RailsProjects脚本:http://railsapps.github.io/rails-google-analytics.html。对我来说没有问题,它检测到了GA,并在一段时间后我能够看到实时用户,所以我知道它正在工作。编辑:脚本似乎支持开启或关闭Turbolinks,这很棒。
# If Turbolinks is supported, set up a callback to track pageviews on page:change.
    # If it isn't supported, just track the pageview now.
    if typeof Turbolinks isnt 'undefined' and Turbolinks.supported
      document.addEventListener "page:change", (->
        GoogleAnalytics.trackPageview()
      ), true
    else
      GoogleAnalytics.trackPageview()

1

虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅链接的答案可能会失效。 为什么和如何删除某些答案? - bummi
好的,我会处理它 - Tarun Garg

0

我在我的Rails应用程序中使用这个。我只是把它放在我的application.js.erb文件中。

// GA racking code
(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','https://www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXX-<%= Rails.env.production? ? '1' : '2' %>', 'auto');
// I have 2 GA properties- one for debug and another for production

// accommodate Turbolinks and track page views
$(document).on('ready page:change', function() {
    ga('send', 'pageview');
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接