Ruby on rails 自定义rails路由不使用:id列

Ruby on rails 自定义rails路由不使用:id列,ruby-on-rails,routes,Ruby On Rails,Routes,我正在尝试创建一个自定义rails路由,它允许我根据url显示信息。例如,我在数据库中的产品具有category\u ids和country原产地字段。我希望能够键入类似于/products/(category_id)/canada的内容,或列出与该类别和国家/地区匹配的项目,但我的尝试(显然)没有成功 到目前为止我已经尝试过了 match 'products/:category_id/:country', to: "products#var_show" 没有运气 我甚至尝试通过串行代码创建一

我正在尝试创建一个自定义rails路由,它允许我根据url显示信息。例如,我在数据库中的产品具有
category\u id
s和
country
原产地字段。我希望能够键入类似于
/products/(category_id)/canada
的内容,或列出与该类别和国家/地区匹配的项目,但我的尝试(显然)没有成功

到目前为止我已经尝试过了

match 'products/:category_id/:country', to: "products#var_show"
没有运气

我甚至尝试通过串行代码创建一个显示产品的路由,但是rails似乎认为我在寻找一个id,尽管我已经在路由和控制器中指定了字段

match 'products/:serial', to: "products#show"
有人能把我引向正确的方向,告诉我我在做什么吗?谢谢

编辑:

Rails似乎在路由和控制器中使用参数:id,而不管我如何称呼它

Processing by ProductsController#show as HTML
Parameters: {"id"=>"481598745"}
理想情况下,这将是
参数:{“serial”=>“481598745”}
在我询问的第二种情况下。

试试这个

match 'products/:category_id/:country' => 'products#show',:as => :show

我不希望按:id搜索产品。我希望它返回与特定:category_id和:country或按:serial匹配的产品。即使在更改并尝试之后,我也得到了与rails使用number as:id时相同的行为。更新了我的问题,并提供了更多关于发生了什么的信息。Rails将:{variable}视为:id,不管它看起来如何。