对于非资源路由,我的帮助器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_path
或item_url
助手将对象传递给他们。
我没有获得所需的路径/sku/2342/id/8484
,而是获得了一个路径,其中应用的项目ID为/sku/8484/id/8484
我在谷歌和StackOverflow中搜索了几分钟,我找不到答案,我已经阅读了Rails路由文档,但仍然没有成功,希望有人可以帮助我,谢谢。
答案 0 :(得分:0)
你在做item_path(item, item)
之类的事吗?我不确定这会奏效。如果您传入实际对象,则会抓取id
字段。
你试过item_path(item.sku, item)
吗?