2013-07-31 1 views
42

Я просматривал каталоги приложений, и я не могу найти страницу html для страницы приветствия на странице по умолчанию. Я также не могу найти маршрут для страницы приветствия приветствия по умолчанию в routes.rb. Как мои рельсы подключают маршрут http://localhost:3000/ к несуществующей странице в моем приложении?Где находится страница «Добро пожаловать на борт» по умолчанию в моем приложении?

Сервер Рельсы производит эту информацию:

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 /' к контроллеру в камне ? Рельсы автоматически направляются к контроллеру в этом драгоценном камне, если маршрут «/» не соответствует чему-либо в route.rb? – 7stud

+1

Обновлен мой ответ, но короткий ответ - «да». –

Смежные вопросы