我搜索了我的应用程序目录,但找不到默认rails Welcome Aboard页面的html页面。我也找不到routes.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)
所以在我看来,有一个控制器埋在一个处理请求的宝石中。
答案 0 :(得分:60)
自Rails 4以来,“欢迎乘客”页面不再位于public/index.html
。它是 - 正如您已经检测到的 - 位于其中一个Rails宝石中。
所以你已经自己回答了这个问题; “欢迎登机”页面 - 在您的情况下 - 位于/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
要按照页面上的说明摆脱它。基本上他们是:
config/routes.rb
中添加根路由以路由到新创建的控制器。至于你的应用程序的请求最终是如何在铁路内的控制器中进行的,让我们深入研究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
在开发模式下运行时,此块会为您的应用程序添加一些路径 - 其中一条是“欢迎乘客”操作的路径:get '/' => "rails/welcome#index"
这与任何其他初始化程序一样 - 在启动应用程序服务器时运行(运行rails server
或者执行此操作)。在Finisher
的情况下,所有初始化程序都在所有其他初始化程序运行后运行。
注意如何附加路由,使它们出现在Routeset的最后。这与Rails使用它找到的第一个匹配路由相结合,确保只有在没有定义其他路由的情况下才会使用这些默认路由。