我在邮递员中使用以下网址提出了GET请求
localhost:8091/trade/search?side=SELL
铁路应该触发了searchTrade行动
get '/trade/search/:commodity/:side/:counterparty/:location' => 'tradeservice#searchTrade'
Rails将路线误解为:
match '/trade/:id', to: 'tradeservice#getTradeById', via: :get
发布版本: 5.1.7 Ruby版本: 2.3.3.p222
这绝对是一个错误,我该如何解决?
答案 0 :(得分:3)
按指定的路径(source)匹配路径。
由于/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'
因为您在the query string(?side=SELL
)中而不是在路径中传递了参数。