Когда запрос сделан, как: http://localhost:8000/welcome
, она совпадает с route
в routes.rb
файле, где маршрут отображается на controller
и action
.
В файле маршрутов, у вас есть:
get 'welcome' => 'pages#home'
get 'welcome'
совпадал с URL .../welcome
и отображающих этот запрос pages#home
где pages
это имя контроллера и home
это действие (метод, определенный в pages_controller
) , Это соглашение Rails, чтобы назвать контроллеры, подобные этому: ControllerName_controller.rb
. Итак, в основном pages
- это имя вашего контроллера, а последнее _controllers
является общим для каждого контроллера в вашем приложении Rails.
Что происходит дальше, это действие контроллера выполняет некоторую работу и разговаривает с model
/database
и создает необходимые переменные/данные, которые будут переданы в view
. Согласно соглашению Rails, должен быть сопоставлен файл view
, такой как: home.html.erb
, который отобразит ответ в браузере.
Есть и другие способы визуализации различных partials
и views
по-разному, но если вы следуете за соглашением Rails, тогда становится очень легко понять и работать с разными моделями, представлениями и контроллерами в Rails. Это называется: Конвенция по конфигурации. Когда вы следуете за Соглашением Rails для именования вещей, Rails делает много работы и конфигурации для вас, чтобы сделать вашу жизнь проще.
Когда вы get 'welcome' => 'pages#home'
в файле routes
, а затем, когда запрос: /welcome
приходит, он отображает до pages_controller
, и он будет искать pages_controller.rb
файла под app/controller/
. Если вы переименуете это на что-то еще, программа не найдет его так, как ожидалось, и выдаст вам сообщение об ошибке, и ваш запрос не будет завершен.
Имя вашего контроллера должно совпадать с именем класса этого контроллера. Это также соглашение Rails. Если вы измените какой-либо из них, вы получите сообщение об ошибке, и ваш запрос не удастся.
отличный ответ, но я должен выбрать другого, поскольку он ответил на обе части. Прости – codyc4321