我很难诊断出以下问题。我有一些服务器端跟踪代码,所以我们在点击下载链接时将json请求传递给控制器。这会触发服务器端跟踪调用。
以下代码在Chrome中的Heroku上进行暂存时效果很好。然而,当我们去生产(mt)时,我们开始得到一些奇怪的行为。如果您在Chrome中点击一次下载,则无需跟踪。如果单击两次,则会跟踪第二次单击。如果您使用IE11,它会按预期工作,生成跟踪事件。如果您使用Firefox,它永远不适用于制作或登台。
我们玩过很多没有结果的东西。请帮忙。
Rails 3.2.19和Ruby 2.1.0
def show
authorize! :view, @thing, :message => "You do not have access to this thing. Is your subscription current?"
respond_to do |format|
format.html { track_event(current_user, "Viewed thing", {name: @thing.name}) }
format.json do
track_event(current_user, "Downloaded thing", {name: @thing.name})
render json: { :success => "success" }
end
end
end
<div class="thing_label" data-container="<%= thing.name.parameterize %>-thing">
<% if !thing.zip_file.blank? %>
<%= link_to (image_tag "cloud.png", height:'30', width:'30', :style => "vertical-align:top"), thing.zip_file, class: 'js-download-thing', title: "Download Thing", rel:"tooltip", data: {toggle:"tooltip", placement:"top", title:"Download Thing", thing_id: thing.id} %>
<% end %>
<%= thing.name.upcase %>
</div>
</div>
</main>
<%= render 'layouts/tracking' %>
</body>
</html>
<script> $(function(){ $('.js-download-thing').click(function(){
thing_id = $(this).data("thing-id")
url = "<%= things_path %>/" + thing_id + ".json";
$.get(url); }) }) </script>
答案 0 :(得分:0)
该链接将用户发送到新页面,没有?
因此,跟踪调用需要在链接加载之前完成,否则将无法调用。
也许您的生产环境要快得多,因此呼叫没有时间加载?
我会在链接上return false;
点击,然后通过该ajax请求的回调将用户发送到下载链接。
我可能完全不在这里,但根据我的经验,我不知道你可以在链接点击后一直处理js而不会在某种程度上停止它。