Javascript 大多数情况下,Rails JSON请求未到达控制器

Javascript 大多数情况下,Rails JSON请求未到达控制器,javascript,ruby-on-rails,ruby,json,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby,Json,Ruby On Rails 3,我很难诊断以下问题。我有一些服务器端跟踪代码,所以我们在单击下载链接时将json请求传递给控制器。这将触发服务器端跟踪调用 下面的代码在Chrome中的Heroku上运行良好。然而,当我们进入生产(mt)时,我们开始出现一些奇怪的行为。如果在Chrome中单击下载一次,则不会进行跟踪。如果单击两次,它将跟踪第二次单击。如果您使用IE11,它会像预期的那样工作,生成跟踪事件。如果您使用Firefox,它永远不会用于生产或登台 我们已经玩了一堆没有结果的东西。请帮忙 Rails 3.2.19和Rub

我很难诊断以下问题。我有一些服务器端跟踪代码,所以我们在单击下载链接时将json请求传递给控制器。这将触发服务器端跟踪调用

下面的代码在Chrome中的Heroku上运行良好。然而,当我们进入生产(mt)时,我们开始出现一些奇怪的行为。如果在Chrome中单击下载一次,则不会进行跟踪。如果单击两次,它将跟踪第二次单击。如果您使用IE11,它会像预期的那样工作,生成跟踪事件。如果您使用Firefox,它永远不会用于生产或登台

我们已经玩了一堆没有结果的东西。请帮忙

Rails 3.2.19和Ruby 2.1.0

物控器 物秀观

“垂直对齐:顶部”),thing.zip_文件,类:'js download thing',标题:“download thing”,rel:“tooltip”,数据:{切换:“tooltip”,位置:“顶部”,标题:“download thing”,thing_id:thing.id}%>
应用程序布局

跟踪部分
$(function(){$('.js下载东西')。单击(function(){
thing_id=$(this.data(“thing id”)
url=“/”+thing_id+”.json”;
$.get(url);})})

该链接会将用户发送到新页面,不是吗

因此,跟踪调用需要在链接加载之前完成,否则它将不会被调用

也许您的生产环境速度明显加快,因此呼叫没有时间加载

我将
返回false,然后在该ajax请求上通过回调将用户发送到下载链接


我可能完全偏离了这一点,但根据我的经验,我不知道你可以在点击链接后一直处理js,而不会在某种程度上停止它

PS-我在不同的对象上使用了几乎完全相同的图案,效果很好。该对象的区别在于rails服务器将下载的对象发送给用户,而不是将它们定向到外部链接。我们试图避免将请求完全路由到服务器,以避免可能导致用户重复单击链接的延迟。您可以在单击链接时禁用该链接。或者将其切换到加载指示器。我还建议使用google analytics事件进行此类跟踪,它们非常轻量级,可能会减少内部跟踪造成的任何延迟。
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}  %>
        &nbsp;&nbsp;
    <% 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>