Rails JSON请求大部分时间都没有到达控制器

时间:2014-08-08 20:17:24

标签: javascript ruby-on-rails ruby json ruby-on-rails-3

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

以下代码在Chrome中的Heroku上进行暂存时效果很好。然而,当我们去生产(mt)时,我们开始得到一些奇怪的行为。如果您在Chrome中点击一次下载,则无需跟踪。如果单击两次,则会跟踪第二次单击。如果您使用IE11,它会按预期工作,生成跟踪事件。如果您使用Firefox,它永远不适用于制作或登台。

我们玩过很多没有结果的东西。请帮忙。

Rails 3.2.19和Ruby 2.1.0

Thing Controller

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>

1 个答案:

答案 0 :(得分:0)

该链接将用户发送到新页面,没有?

因此,跟踪调用需要在链接加载之前完成,否则将无法调用。

也许您的生产环境要快得多,因此呼叫没有时间加载?

我会在链接上return false;点击,然后通过该ajax请求的回调将用户发送到下载链接。

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