0

我有书籍作为资源,id、ean、isbn 是它的属性。我希望它被访问为books/id/1or books/isbn/1212100000orbooks/ean/1313911

在我的 routes.rb 中,我写了以下内容。

   resources :books do
        collection do
            get 'isbn'
            get 'ean'
            get 'id'
        end
    end

但是,当我尝试访问 localhost:3000/books/id/1时,它给出了....没有路线匹配“ /books/id/1

我可以访问localhost:3000/books/id。这意味着我需要在 routes.rb 中编写单独的映射,但是资源声明的用途是什么?

任何人都可以建议我在不编写显式映射的情况下这样做。

4

2 回答 2

2

收集路由预计会返回多个结果,因此没有 id 参数。如果您想要 id,请使用成员路由,例如:

resources :books do
    member do
        get 'isbn'
        get 'ean'
        get 'id'
    end
end
于 2012-06-20T11:20:50.510 回答
-1

添加

match ':controller/:action/:id/'

到你的 routes.rb,接近尾声。

于 2012-06-20T11:22:29.313 回答