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分析添加到您的应用程序的简洁方法.希望对你有效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |