如何使用Google Analytics(分析)追踪Rails中的使用者

时间:2019-03-04 14:12:18

标签: ruby-on-rails ruby-on-rails-3 google-analytics

我正在使用以下Google Analytics(分析)代码来跟踪我的Ruby on Rails 4应用程序中的用户

    // ga('create', 'UA-1234567-1', 'auto');
    ga('create', 'UA-1234567-1', 'auto', { 'userId': <%= current_user.id %> });
    // ga('set', '&uid', <%= current_user.id %>); // Set the user ID using signed-in user_id.
    ga('send', 'pageview');

但是我得到了错误

undefined method `id' for nil:NilClass

该行

ga('create', 'UA-1234567-1', 'auto', { 'userId': <%= current_user.id %> });

我正在关注该线程How do I set USER_ID in Google Universal Analytics tracking code in Rails?和官方文档https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id,但不确定出了什么问题,因为它几乎是相同的代码。

2 个答案:

答案 0 :(得分:1)

仅为已登录用户添加检查条件-

<% if current_user.present? %>
 <script>
  //analytics stuffs

   ga('create', 'UA-1234567-1', 'auto', { 'userId': <%= current_user.id %> }); // Set the user ID using signed-in user_id.
   ga('send', 'pageview');
 </script>
<% end %>

 <script>
  //analytics stuffs

   ga('create', 'UA-1234567-1', 'auto', { 'userId': <%= current_user.present? ? current_user.id : nil %> }); // Set the user ID using signed-in user_id.
   ga('send', 'pageview');
 </script>

答案 1 :(得分:0)

对于匿名用户,我建议发送零,因为这种情况在您的生产数据库中将永远不存在。这样,如果您决定需要的话,仍然可以跟踪那些用户。

如果您这样做很好,那么应该可以解决问题:

ga('create', 'UA-1234567-1', 'auto', {'userId': <%= user_signed_in? ? current_user.id : 0 %>})

这里是user_signed_in? https://github.com/plataformatec/devise#controller-filters-and-helpers

文档的链接。