Ruby - маршрут запроса с подстановочным знаком не работает - PullRequest
0 голосов
/ 07 декабря 2018

Может кто-нибудь подсказать, почему эти 2 маршрута не одинаковы:

get('/:id/' => 'outlets/play#show', :as => :listen, constraints: { id: /thetrack-a123-bay7623/ } )

get('/:id/' => 'outlets/play#show', :as => :listen, constraints: { id: /thetrack-.*/ } )

То, чего я пытаюсь достичь - это только желаниеэтот маршрут outlets/play#show, который будет использоваться, когда есть :id, который начинается с thetrack.

Я обнаружил, что если я явно использую эти символы, то это прекрасно, т.е. без thetrack в маршрутене использует этот маршрут.Однако, если я использую thetrack-.*, он все равно идет по маршруту outlets/play#show, несмотря на то, что thetrack не присутствует в моем запросе.

Есть идеи?

Я пробовал другие шаблоны регулярных выражений, напримерthetrack-.+ thetrack-.+-.+ thetrack-.*-.* без удачи

1 Ответ

0 голосов
/ 07 декабря 2018

Если вы пытаетесь направить любой запрос /:id/ с идентификатором, начинающимся с thetrack- до outlets/play#show, то ваш настроенный маршрут должен работать:

get '/:id/', to: 'outlets/play#show', as: :listen, constraints: { id: /thetrack-.*/ }

Вот несколько примеров путейкоторый будет направлен на outlets/play#show с использованием этого подстановочного знака:

  • /thetrack-
  • /thetrack-a123
  • /thetrack-a123-bay7623

/:id/ довольно широкий охват.Убедитесь, что у вас нет других конфликтующих маршрутов.т. е. другой маршрут на корневом уровне /:something/, который может перехватывать другие запросы, где thetrack- не указано.

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