哪里是我的应用程序中的默认“欢迎登机”页面?

我search了我的应用程序的目录,并找不到默认的“欢迎导航”页面上的html页面。 我也无法findroutes.rb中的默认Welcome Aboard页面的路由。 我的rails应用程序如何将http://localhost:3000/路由到我应用程序中不存在的页面?

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) 

所以在我看来,有一个埋在gem某处的控制器可以处理这个请求。

自Rails 4以来,“欢迎登机”页面不再位于public/index.html 。 这是 – 你已经发现 – 位于一个Rails的gem。

所以你已经自己回答了这个问题。 “欢迎登机”页面 – 在你的情况 – 位于/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. 创build一个控制器
  2. config/routes.rb添加一个根路由以路由到新创build的控制器。

至于对应用程序的请求是如何在一个控制器内部进行的,让我们深入一下:Inside 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 

在开发模式下运行时,这个块为你的应用程序添加了一些path – 其中之一是到“欢迎登机”操作的path: get '/' => "rails/welcome#index"

这就像任何其他的初始化工具一样,当你启动你的应用程序服务器(运行rails server或者你做的)时就完成了。 在Finisher的情况下,所有的初始化器都在所有其他初始化器运行之后运行。

请注意路由是如何附加的,以便它们最后出现在Routeset中。 这与Rails使用find的第一个匹配路由相结合,确保这些默认路由只有在没有其他路由被定义的情况下才会被使用。