我有书籍作为资源和id,ean,isbn是它的属性。
我希望将其作为books/id/1
或books/isbn/1212100000
或books/ean/1313911
在我的routes.rb中,我写了以下内容。
resources :books do
collection do
get 'isbn'
get 'ean'
get 'id'
end
end
但是,当我尝试访问l ocalhost:3000/books/id/1
时,
它给....
没有路线匹配“/books/id/1
”
我可以访问localhost:3000/books/id
。
这意味着我需要在routes.rb中编写单独的映射,但那么资源声明的用途是什么?
任何人都可以建议我在不编写显式映射的情况下执行此操作。
答案 0 :(得分:2)
收集路由预计会返回多个结果,因此没有id参数。如果你想要id,请使用成员路由,例如:
resources :books do
member do
get 'isbn'
get 'ean'
get 'id'
end
end
答案 1 :(得分:-1)
添加
match ':controller/:action/:id/'
到您的routes.rb,接近结尾。