Rails击错网址

时间:2019-04-25 12:24:39

标签: ruby-on-rails ruby

我在邮递员中使用以下网址提出了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

日志

image

系统配置

发布版本: 5.1.7 Ruby版本: 2.3.3.p222

这绝对是一个错误,我该如何解决?

1 个答案:

答案 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)中而不是在路径中传递了参数。

相关问题