56

アプリのディレクトリを精査しましたが、デフォルトの Rails Welcome Aboard ページの HTML ページが見つかりません。また、routes.rb でデフォルトの Welcome Aboard ページのルートを見つけることができません。http://localhost:3000/Rails アプリは、アプリ内に存在しないページにどのようにルーティングしますか?

Rails サーバーは次の情報を生成します。

Started GET "/" for 127.0.0.1 at 2013-07-31 02:00:13 -0600
Processing by Rails::WelcomeController#index as HTML
  Rendered /Users/7stud/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/railties-4.0.0/lib/rails/templates/rails/welcome/index.html.erb (0.1ms)
Completed 200 OK in 3ms (Views: 2.5ms | ActiveRecord: 0.0ms)

そのため、リクエストを処理するどこかの宝石にコントローラーが埋め込まれているように見えます。

4

1 に答える 1

74

Rails 4 以降、「Welcome aboard」ページはもはやpublic/index.html. これは、すでにお気づきのとおり、Rails gem の 1 つに含まれています。

したがって、あなたはすでに質問に自分で答えています。「ようこそ」ページは - あなたの場合 - にあります/Users/7stud/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/railties-4.0.0/lib/rails/templates/rails/welcome/index.html.erb

それを取り除くには、ページの指示に従ってください。基本的には次のとおりです。

  1. コントローラーを作成する
  2. ルート ルートを追加して、config/routes.rbその新しく作成されたコントローラーにルーティングします。

アプリケーションへのリクエストが Railties 内のコントローラーでどのように処理されるかについて、gem を掘り下げてみましょうRails::Application::Finisher

initializer :add_builtin_route do |app|
  if Rails.env.development?
    app.routes.append do
      get '/rails/info/properties' => "rails/info#properties"
      get '/rails/info/routes'     => "rails/info#routes"
      get '/rails/info'            => "rails/info#index"
      get '/'                      => "rails/welcome#index"
    end
  end
end

このブロックは、開発モードでの実行時にアプリケーションにいくつかのルートを追加します。そのうちの 1 つは、「Welcome aboard」アクションへのルートです。get '/' => "rails/welcome#index"

これは、他のイニシャライザーと同様に、アプリケーションサーバーを起動するときに行われます (実行rails server中または実行中)。の場合Finisher、すべてのイニシャライザは、他のすべてのイニシャライザが実行された後に実行されます。

ルートがルートセットの最後に表示されるようにルートが追加される方法に注意してください。これは、Rails が最初に一致したルートを使用するという事実と相まって、他のルートが定義されていない場合にのみ、これらのデフォルト ルートが使用されることを保証します。

于 2013-07-31T08:19:17.063 に答える