Rails 3.2.2动作被调用两次

时间:2012-07-07 15:56:05

标签: ruby-on-rails-3

我的应用基于 Rails 3.2.2. 面临一些奇怪的问题:开发/制作中的所有操作都会被调用两次。有什么建议吗?

Started GET "/faqs" for 127.0.0.1 at 2012-07-07 17:08:06 +0200
Processing by FaqsController#index as HTML
  Faq Load (0.5ms)  SELECT `faqs`.* FROM `faqs` WHERE `faqs`.`active` = 1 ORDER BY position asc
  Rendered faqs/index.html.haml within layouts/application (3.1ms)
  Rendered shared/_navigation_bar.html.haml (5.3ms)
  Rendered devise/registrations/_register.html.erb (5.5ms)
Completed 200 OK in 137ms (Views: 43.3ms | ActiveRecord: 0.5ms | Solr: 0.0ms)


Started GET "/faqs" for 127.0.0.1 at 2012-07-07 17:08:06 +0200
Processing by FaqsController#index as */*
  Faq Load (0.2ms)  SELECT `faqs`.* FROM `faqs` WHERE `faqs`.`active` = 1 ORDER BY position asc
  Rendered faqs/index.html.haml within layouts/application (0.2ms)
  Rendered shared/_navigation_bar.html.haml (3.9ms)
  Rendered devise/registrations/_register.html.erb (12.1ms)
Completed 200 OK in 33ms (Views: 30.2ms | ActiveRecord: 0.2ms | Solr: 0.0ms)

更新了#1

简单的控制器:

class FaqsController < ApplicationController
  respond_to :html

  def index
    @faqs = Faq.all
    respond_with(@faqs)
  end
end

查看也非常简单:

%h2 Faqs
- @faqs.each_with_index do |faq, index|
  .span9  
    %h3
      = "%d." % (index + 1)
      = faq.title
    %p= faq.body

2 个答案:

答案 0 :(得分:2)

这可能是由于Chrome。您可以在Safari / Firefox / IE等中进行测试

我认为它导致两次加载的原因是因为Chrome“分叉”了请求并且基本上发出了两个请求。它呈现在窗口中返回的第一个。

IIRC我多年前研究过这个问题,这是一个实现更快速渲染页面的功能。

答案 1 :(得分:0)

这个问题可能与Rails 3.2.2没有任何关系。

如果您的网页上有javascript在页面加载时发出ajax请求,则会看到这种确切的行为。我将浏览所有脚本资产,并在页面加载后查找一个旨在回调您的应用程序的资产。你可能会在那里找到罪魁祸首。