2

私のアプリは、Rails 3.2.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
4

2 に答える 2

2

これはおそらく Chrome が原因です。Safari/Firefox/IEなどでテストできます

2回のロードが発生すると私が考える理由は、Chromeがリクエストを「フォーク」し、本質的に2つのリクエストを作成するためです。ウィンドウに返された最初のものをレンダリングします。

IIRC 私はこれを何年も前に調査しましたが、これはページをより高速にレンダリングするために実装された機能でした。

于 2014-08-13T17:10:43.380 に答える
0

この問題は、おそらく Rails 3.2.2 とは関係ありません。

この正確な動作は、ページの読み込み時に ajax リクエストを行う JavaScript がページにある場合に見られます。すべてのスクリプト アセットを調べて、ページが読み込まれた後にアプリにコールバックするためのものを探します。そこに犯人がきっと見つかるはずです。

于 2013-01-27T17:58:27.983 に答える