Организация маршрутов в Rails — restful_authentication, session и /login
-
03-07-2019 - |
Вопрос
Я пытаюсь настроить маршрут для приложения Rails.Я установил restful_authentication и в основном следовал инструкциям.Я настроил маршруты следующим образом:
map.login '/login', :controller => 'sessions', :action => 'new'
map.logout '/logout', :controller => 'sessions', :action => 'destroy'
map.resource :session
Если вы не вошли в систему, вы будете перенаправлены на http://localhost:3000/сессия/новый.В этом есть какой-то смысл, как говорит код в lib/authenticated_system.rb. redirect_to new_session_path
.
Но я думал, что сопоставление маршрутов должно работать в обоих направлениях (код в URL и URL в код).Может кто-нибудь объяснить?Спасибо
Решение
map.resource :session
создает для вас несколько именованных ресурсов, включая new_session_path
(видеть ActionController::Ресурсы).
map.login
и map.logout
это всего лишь вспомогательные маршруты, которые облегчают понимание вашего кода. map.login
(который генерирует login_path
) указывает на ту же комбинацию контроллер/действие, что и new_session_path
делает, просто легче сразу запомнить, что он делает.