我正在使用以下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,但不确定出了什么问题,因为它几乎是相同的代码。
答案 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