Как отслеживать пользователей в Rails с помощью Google Analytics - PullRequest
0 голосов
/ 04 марта 2019

Я использую следующий код 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 %> });

Я слежу за этой веткой Как установить USER_ID в коде отслеживания Google Universal Analytics в Rails? и официальный документ https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id, но не уверен, что с ним не такпочти такой же код.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Я бы рекомендовал отправлять ноль в случае анонимного пользователя, так как это условие никогда не будет существовать в вашей производственной базе данных.Таким образом, вы все равно можете отслеживать этих пользователей, если решите, что вам нужно.

Если вы хорошо справляетесь с этим, то это должно сработать:

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

0 голосов
/ 04 марта 2019

Добавить условие проверки только для пользователя logged_in -

<% 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...