具有模型属性和url帮助程序的非资源路由

时间:2013-10-11 04:08:13

标签: ruby-on-rails ruby-on-rails-4 routing

对于非资源路由,我的帮助器URL和路径助手有问题,

模型Item除其他属性外还包含sku属性

所以使用

进行默认路由
resources :items

创建默认索引路径

item GET        /items/:id(.:format)                              items#show

但是我想覆盖那条匹配网址的路线:

/sku/:sku/id/:id

而不是默认网址:

/items/:id

所以我创建了以下路线并将其放在resources :items之上,首先匹配:

get "sku/:sku/id/:id" => "items#show", as: "item"

如果我转到www.example.com/sku/2342/id/8484,它会正确显示正确的项目。

但是,我的问题是,如果我想使用item_pathitem_url助手将对象传递给他们。

我没有获得所需的路径/sku/2342/id/8484,而是获得了一个路径,其中应用的项目ID为/sku/8484/id/8484

两次

我在谷歌和StackOverflow中搜索了几分钟,我找不到答案,我已经阅读了Rails路由文档,但仍然没有成功,希望有人可以帮助我,谢谢。

1 个答案:

答案 0 :(得分:0)

你在做item_path(item, item)之类的事吗?我不确定这会奏效。如果您传入实际对象,则会抓取id字段。

你试过item_path(item.sku, item)吗?