Rails:用于跟踪会话不一致的Javascript

时间:2016-07-04 16:23:33

标签: javascript ruby-on-rails mixpanel

我的Rails应用程序中有一些JS代码,可以在新会话中向Mixpanel发出跟踪事件。

理论上,在任何其他事件被解雇之前,我应该看到"新会议"事件第一。但在一些访问中,我没有看到"新会议"事件意味着它在某些场合没有被解雇。

以下代码有什么问题?

Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library

2 个答案:

答案 0 :(得分:4)

如果您正在使用Turbolinks,则在首次加载页面后不会触发就绪事件,因此您需要绑定到page:load之类的自定义turbolinks事件,如:

var ready;
ready = function() {
  var currentLocation = window.location.hostname;
  var lastLocation = document.referrer;
  if (lastLocation.indexOf(currentLocation) > -1) {
  } else {
    mixpanel.track("New Session", {});
  }
  mixpanel.track("Page View", {});
};

$(document).ready(ready);
$(document).on('page:load', ready);

对于 Rails 5 ,事件名称已更改为turbolinks:load

答案 1 :(得分:1)

在真正解决问题之前,您需要弄清楚如何重现问题。

我们知道代码正在运行,我建议使用if语句进行跟踪和添加数据。

$(function(){
  var currentLocation = window.location.hostname;
  var lastLocation = document.referrer;
  if (lastLocation.indexOf(currentLocation) > -1) {
    // internal links
    mixpanel.track("Page View", {});
  } else {
    // external or non-existant link
    // bookmarks and email links won't have referrers
    mixpanel.track("New Session", {referrer: document.referrer});
    mixpanel.track("Page View", {});
  }
})