使用 Devise 在 Rails 中使用 google 分析注册页面进行跟踪
Tracking with google analytics sign up page in Rails with Devise
我正在尝试跟踪我的 Rails 应用程序的每个页面,在布局上呈现此部分:
var analyticsId = '<%= Settings.env.app.analytics_id %>';
(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', '<%= Settings.env.app.analytics_id %>', 'auto', 'trackEvent: true');
ga('send', 'pageview');
将 Google Analytics ID 添加到设置后,我可以在我的 Google Analytics 仪表板中看到对我的 users#sign_in
页面的访问,但看不到对我的 [=16] 的访问=] 页。
通过 firebug 控制台检查两个页面,我在 html 代码中看到预期的结果:
var analyticsId = 'UA-XXXXXXXX-X';
(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-XXXXXXXX-X', 'auto', 'trackEvent: true');
ga('send', 'pageview');
With 'UA-XXXXXXXX-X' = Settings.env.app.analytics_id 定义在 config/settings/app.yml under analytics_id.
我们使用devise来处理signin/signup进程,这是routes.rb
中与devise相关的部分
Rails.application.routes.draw do
devise_for :users, controllers: {
confirmations: 'users/confirmations',
registrations: 'users/registrations'
}
ActiveAdmin.routes(self)
authenticated :user do
devise_scope :user do
root to: redirect("/home")
end
end
unauthenticated do
devise_scope :user do
root to: redirect("users/sign_in"), as: "unauthenticated_index"
get '/pages/:page', to: 'pages#show', as: "pages_show"
end
end
问题似乎与以下事实有关:
Rails 4.0 introduced a feature named Turbolinks to increase the
perceived speed of a website.
Google Analytics doesn’t work for a Rails 4.0 or newer web
applications. To be more precise, it won’t work for all pages. It can
be made to work with a workaround to accommodate Turbolinks.
长话短说,我已根据此 post 中的答案应用了一个解决方法:
Google analytics with rails 4
我正在尝试跟踪我的 Rails 应用程序的每个页面,在布局上呈现此部分:
var analyticsId = '<%= Settings.env.app.analytics_id %>';
(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', '<%= Settings.env.app.analytics_id %>', 'auto', 'trackEvent: true');
ga('send', 'pageview');
将 Google Analytics ID 添加到设置后,我可以在我的 Google Analytics 仪表板中看到对我的 users#sign_in
页面的访问,但看不到对我的 [=16] 的访问=] 页。
通过 firebug 控制台检查两个页面,我在 html 代码中看到预期的结果:
var analyticsId = 'UA-XXXXXXXX-X';
(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-XXXXXXXX-X', 'auto', 'trackEvent: true');
ga('send', 'pageview');
With 'UA-XXXXXXXX-X' = Settings.env.app.analytics_id 定义在 config/settings/app.yml under analytics_id.
我们使用devise来处理signin/signup进程,这是routes.rb
中与devise相关的部分Rails.application.routes.draw do
devise_for :users, controllers: {
confirmations: 'users/confirmations',
registrations: 'users/registrations'
}
ActiveAdmin.routes(self)
authenticated :user do
devise_scope :user do
root to: redirect("/home")
end
end
unauthenticated do
devise_scope :user do
root to: redirect("users/sign_in"), as: "unauthenticated_index"
get '/pages/:page', to: 'pages#show', as: "pages_show"
end
end
问题似乎与以下事实有关:
Rails 4.0 introduced a feature named Turbolinks to increase the perceived speed of a website.
Google Analytics doesn’t work for a Rails 4.0 or newer web applications. To be more precise, it won’t work for all pages. It can be made to work with a workaround to accommodate Turbolinks.
长话短说,我已根据此 post 中的答案应用了一个解决方法: Google analytics with rails 4