2013-07-31 33 views
42

我搜索了我應用程序的目錄,並找不到缺省Rails Welcome Welcome頁面的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/[email protected]_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

你可以通過訪問robots.txt查看是否所有東西都沒問題 –

回答

52

由於Rails 4,「歡迎搭乘」頁面不再位於public/index.html。正如你已經發現的那樣,它位於Rails的寶石之一內。

所以你已經自己回答了這個問題; 「歡迎登機」頁面 - 在你的情況 - 位於/Users/7stud/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.0.0/lib/rails/templates/rails/welcome/index.html.erb

要擺脫它,按照頁面上的說明。基本上,他們是:

  1. 創建一個控制器
  2. config/routes.rb路由添加根路由到新創建的控制器。

至於在裏面railties控制器請求應用程序如何結束了,讓我們深入到創業板:內部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使用它找到的第一個匹配路由相結合,確保這些默認路由只有在沒有其他路由被定義的情況下才會被使用。

+3

你對我來說太快:) – Benj

+0

有一種懷疑:我的應用如何將'http:// localhost:3000 /'路由到gem中的控制器?如果路徑'/'與routes.rb中的任何內容不匹配,軌道是否會自動路由到該寶石中的控制器? – 7stud

+1

更新了我的答案,但簡短答案是「是」。 –

相關問題