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

时间:2013-07-31 08:03:55

标签: ruby-on-rails ruby-on-rails-4

我搜索了我的应用程序目录,但找不到默认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)

所以在我看来,有一个控制器埋在一个处理请求的宝石中。

1 个答案:

答案 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

要按照页面上的说明摆脱它。基本上他们是:

  1. 创建控制器
  2. config/routes.rb中添加根路由以路由到新创建的控制器。
  3. 至于你的应用程序的请求最终是如何在铁路内的控制器中进行的,让我们深入研究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使用它找到的第一个匹配路由相结合,确保只有在没有定义其他路由的情况下才会使用这些默认路由。