【问题标题】:Is this the correct way to set up google analytics in a rails 5 app?这是在 Rails 5 应用程序中设置谷歌分析的正确方法吗?
【发布时间】:2017-09-10 08:21:07
【问题描述】:

Rails 中不乏涵盖谷歌分析的“教程”,但我找不到真正完整的教程。有人可以告诉我我是否结合了正确的信息并拥有设置 GA 所需的东西,如果没有,我做错了什么?谢谢。

我制作了一个名为 google_analytics.js.coffee 的文件,它位于 assets/javascript 文件夹中。它包含(来自http://reed.github.io/turbolinks-compatibility/google_analytics.html):

class @GoogleAnalytics

@load: ->

((i, s, o, g, r, a, m) ->
  i['GoogleAnalyticsObject'] = r
  i[r] = i[r] or ->
    (i[r].q = i[r].q or []).push arguments
    return

  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
  return
) window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'
ga 'create', GoogleAnalytics.analyticsId(), 'auto'

# 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()

@trackPageview: (url) ->
unless GoogleAnalytics.isLocalRequest()
  ga 'send',
    hitType: 'pageview'
    page: location.pathname

@isLocalRequest: ->
GoogleAnalytics.documentDomainIncludes "local"

@documentDomainIncludes: (str) ->
document.domain.indexOf(str) isnt -1

@analyticsId: ->
# your google analytics ID(s) here...
'UA-MYIDHERE-X'

GoogleAnalytics.load()

然后,由于没有人谈论这是否就是所有需要的,所以我使用了这里 (https://gist.github.com/esBeee/545653241530f8f2c2e16371bec56f20) 的代码并将其放在 application.html.erb 的头部,尽管那个人正在拼凑来自论坛中的对话。他的代码还说要在 google_analytics.js.coffee 中添加四行。那是另一种方法吗?劣质的?它是否需要顶部的 @GoogleAnalytics 类?对老手来说显而易见的事情对新手来说并不明显!无论如何,这就是我在我的应用程序布局标题中放置的内容:

<% if Rails.env.production? %>
<script type="text/javascript">
  (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-MYIDHERE-X', 'auto');
</script>

现在我有了 G_A.js.coffee 页面的代码和上面的代码,我准备好按照这些步骤部署到 heroku(来自这里:http://railsapps.github.io/rails-google-analytics.html)吗?

$ git add -A
$ git commit -m "analytics"
$ RAILS_ENV=production rake assets:precompile
$ git add -A
$ git commit -m "assets compiled for Heroku"

感谢所有从头开始制作正确教程的人,不要做任何假设,并坚持到底。

【问题讨论】:

  • 您为什么不直接复制从 google 获得的分析并将其粘贴到您的布局文件中。我就是这样做的,而且效果很好。
  • 而您使用的是 rails 5,通过 heroku 部署,并且什么也没做?
  • 我正在使用 Rails 4 并部署在 Heroku 上。我曾经写过博客,当你写博客时,你所要做的就是将你的谷歌分析代码放在一个 div 或布局中的某个东西中。 Google 使用 javascript 在用户访问的每个页面上运行,仅此而已。没有什么太复杂的地方。

标签: javascript ruby-on-rails heroku google-analytics coffeescript


【解决方案1】:

根据您为 Coffee Script 提供的链接: http://reed.github.io/turbolinks-compatibility/google_analytics.html

在咖啡脚本代码中

if typeof Turbolinks isnt 'undefined' and Turbolinks.supported
  document.addEventListener "page:change", (->
    GoogleAnalytics.trackPageview()
  ), true
else
  GoogleAnalytics.trackPageview()

将 'page:change' 更改为 'turbolinks:load' 成为

if typeof Turbolinks isnt 'undefined' and Turbolinks.supported
  document.addEventListener "turbolinks:load", (->
    GoogleAnalytics.trackPageview()
  ), true
else
  GoogleAnalytics.trackPageview()

那么你就准备好了。不需要在 layouts/application.html.erb 文件上添加额外的代码,这对我有用。

【讨论】:

    【解决方案2】:

    这就是我在 Rails 4 应用程序中的方式(部署在 Heroku 上) 在我的视图中 > 布局 > Application.html.erb :

    <html>
    
     <head>
      #meta tags
     </head>
    
     <body>
      <%= yield %>
      <script>
       # google analytics javascript snippet.
      </script>
     </body>
    
    </html>
    

    Google 使用 javascript 在用户访问的每个页面上运行,仅此而已。只要确保它在每个页面中都呈现,就可以了。您可以将其放入部分内容中并将其呈现在您的布局中。 Google 建议您将其放在结束标记之前。

    【讨论】:

      猜你喜欢
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多