加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 将谷歌分析添加到Rails 4.2应用程序

发布时间:2020-12-17 03:29:33 所属栏目:百科 来源:网络整理
导读:我有一个Rails 4.2应用程序,我已经与Heroku一起部署,我试图将Google Analytics添加到其中.但是,Google Analytics并未提供任何会话. 任何建议为什么以及如何解决这个问题? 码 /app/layouts/_footer.html.erb: % if Rails.env.production? % script (functio
我有一个Rails 4.2应用程序,我已经与Heroku一起部署,我试图将Google Analytics添加到其中.但是,Google Analytics并未提供任何会话.

任何建议为什么以及如何解决这个问题?

/app/layouts/_footer.html.erb:

<% if Rails.env.production? %>
  <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-XXXXXXXX-X','herokuapp.com');
    ga('send','pageview');

  </script>
<% end %>

/app/layouts/application.html.erb:

<!DOCTYPE html>
<html>
<head>
  <title>Title</title>
<%= Gon::Base.render_data({}) %>
  <%= stylesheet_link_tag    'application',media: 'all','data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application','data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
</head>
<body>

<div class="container">
    <%= yield %>
</div>

<%= render 'layouts/footer' %>

</body>
</html>

/app/assets/javascripts/analytics.js.coffee:

$(document).on 'page:change',->
 if window._gaq?
  _gaq.push ['_trackPageview']
 else if window.pageTracker?
  pageTracker._trackPageview()

/app/assets/javascripts/application.js:

//= require jquery
//= require analytics
//= require bootstrap
//= require jquery_ujs
//= require jquery.ui.all
//= require Chart
//= require jquery.turbolinks
//= require lodash
//= require_tree .

的Gemfile:

source 'https://rubygems.org'

gem 'rails','4.2.2'
gem 'bootstrap-sass','3.2.0.0'
gem 'sass-rails','5.0.2'
gem 'uglifier','2.5.3'
gem 'coffee-rails','4.1.0'
gem 'jquery-rails','4.0.3'
gem 'jquery-ui-rails','~> 4.2.1'
gem 'turbolinks','2.3.0'
gem 'jquery-turbolinks'
gem 'jbuilder','2.2.3'
gem 'sdoc','0.4.0',group: :doc
gem 'chart-js-rails'
gem 'gon'
gem 'lodash-rails'

group :development,:test do
  gem 'sqlite3','1.3.9'
  gem 'byebug','3.4.0'
  gem 'web-console','2.0.0.beta3'
  gem 'spring','1.1.3'
end

group :production do
  gem 'pg','0.17.1'
  gem 'rails_12factor','0.0.2'
end

解决方法

添加脚本的方式是错误的,因为Turbolinks无法正常工作,你知道你的_footer中的代码将无法按预期运行,因为Turbolinks不会重新加载该标记.

我将为您提供所有我的rails应用程序的谷歌分析的自定义实现.

在您的app / assets / javascripts中创建一个名为google_analytics.js.coffee的新文件,并添加以下脚本:

class @GoogleAnalytics

  @load: ->
    # Google Analytics depends on a global _gaq array. window is the global scope.
    window._gaq = []
    window._gaq.push ["_setAccount",GoogleAnalytics.analyticsId()]

    # Create a script element and insert it in the DOM
    ga = document.createElement("script")
    ga.type = "text/javascript"
    ga.async = true
    ga.src = ((if "https:" is document.location.protocol then "https://ssl" else "http://www")) + ".google-analytics.com/ga.js"
    firstScript = document.getElementsByTagName("script")[0]
    firstScript.parentNode.insertBefore ga,firstScript

    # 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()
      if url
        window._gaq.push ["_trackPageview",url]
      else
        window._gaq.push ["_trackPageview"]
      window._gaq.push ["_trackPageLoadTime"]

  @isLocalRequest: ->
    GoogleAnalytics.documentDomainIncludes "local"

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

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

GoogleAnalytics.load()

正如您所看到的,它增加了对Turbolinks的支持,这是一种将Google分析添加到您的应用程序的简洁方法.希望对你有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读