Рельсы попали в неправильный URL - PullRequest
0 голосов
/ 25 апреля 2019

Я сделал запрос GET со следующим URL в почтальоне

localhost:8091/trade/search?side=SELL

Ожидаемое поведение

Рельсы должны были вызвать searchTrade action get '/trade/search/:commodity/:side/:counterparty/:location' => 'tradeservice#searchTrade'

Фактическое поведение

Рельсы неверно истолковали маршрут как: match '/trade/:id', to: 'tradeservice#getTradeById', via: :get

Журналы

image

Конфигурация системы

Rails-версия : 5.1.7 Ruby-версия : 2.3.3.p222

Это определенно ошибка, как мне это исправить ??

1 Ответ

3 голосов
/ 25 апреля 2019

Рельсовые маршруты сопоставляются в указанном порядке (источник) .
/trade/search соответствует как /trade/search, так и /trade/:id, поскольку :id является параметром.

Исправление будет заключаться в размещении

get '/trade/search/:commodity/:side/:counterparty/:location' => 'tradeservice#searchTrade'

над

match '/trade/:id', to: 'tradeservice#getTradeById', via: :get

Вы также можете захотеть, чтобы ваша конечная точка выглядела так:

get '/trade/search' => 'tradeservice#searchTrade'

поскольку вы передаете параметры в строке запроса (?side=SELL), а не в пути.

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