Рельсовые маршруты сопоставляются в указанном порядке (источник) .
/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
), а не в пути.