Для маршрутов с одинаковыми шаблонами URI, который сопоставляется первым? - PullRequest
0 голосов
/ 21 марта 2019

Предположим, что приложение Rails рисует следующие маршруты (т. Е. Это то, что будет показывать rake routes):

Verb  URI Pattern  Controller#Action
GET   /            one#show
GET   /            two#show
GET   /            three#show

Каков порядок сопоставления этих маршрутов при запросе корневого пути (т. Е. /))?Какие факторы определяют, какой маршрут сопоставляется первым?

Справочная информация : я столкнулся с приложением Rails (Discourse), для которого я пишу плагин.Приложение Rails устанавливает набор корневых маршрутов через root to: в своем файле rout.rb.Мой плагин пытается предоставить свой собственный корневой маршрут следующим образом:

Discourse::Application.routes.append do
  root to: 'custom#show'
end

… добавление нового маршрута к выводу из rake routes:

Verb  URI Pattern  Controller#Action
GET   /            one#show
GET   /            two#show
GET   /            three#show
GET   /            customshow

Моя проблема в том, что я не являюсьНевозможно заставить этот новый корень иметь приоритет над другими корневыми маршрутами.Я попытался использовать prepend вместо append, который перемещает пользовательский корневой маршрут в верхнюю часть вывода, но он все еще не сопоставляется первым.

Редактировать : Предположительно, маршрутысопоставляются в порядке, в котором они указаны, независимо от порядка вывода rake routes.

1 Ответ

1 голос
/ 21 марта 2019

Первым подходящим маршрутом будет маршрут, указанный ранее в routes.rb.

Маршруты Rails совпадают в указанном порядке, так что если вы иметь resources :photos выше, чем получить 'photos/poll' действия шоу маршрут для строки ресурсов будет сопоставлен до строки получения. к исправьте это, переместите строку get над строкой ресурсов, чтобы она сопоставляется первым.

Источник: ссылка , вторая нота

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...