我认为这很简单,但无法在任何地方找到它。
我的网站有很多不同的型号,都是互相连接的。 让我们说:
书和照片都有作者,照片可以在书中。
resources :authors do
resources :books
etc..
因此,使用嵌套的资源路由,我们得到类似的东西:
/authors/john-smith/photos/picture-of-a-house
或
/books/house-renovation/photos/picture-of-a-house
这些网址与我网站上的面包屑相匹配。 面包屑看起来像这样:
Home > Books > House Renovation > Photos > Picture of a House
问题是这些URL和面包屑变得太长,而且太“类似资源”。我的意思是,如果它使用/ categories / category_id / products / id格式,你可以从远处发现一个Rails网站。
有没有办法缩短这个,甚至可以让它变得漂亮? 它仍然需要Category和Product名称,但在此之前最多只需要一个参数。 类似的东西:
Book_Photos > House Renovation > Picture of a House
答案 0 :(得分:0)
您可以通过简单地将:path
选项传递到资源并将其设置为路径文件中的空字符串来实现此目的。
我刚刚玩过以下内容:
resources :authors, :path => "" do
resources :books, :path => ""
end
在它生成的命令行上运行rake路由:
author_books GET /:author_id(.:format) books#index
POST /:author_id(.:format) books#create
new_author_book GET /:author_id/new(.:format) books#new
edit_author_book GET /:author_id/:id/edit(.:format) books#edit
author_book GET /:author_id/:id(.:format) books#show
PUT /:author_id/:id(.:format) books#update
DELETE /:author_id/:id(.:format) books#destroy
authors GET / authors#index
POST / authors#create
new_author GET /new(.:format) authors#new
edit_author GET /:id/edit(.:format) authors#edit
author GET /:id(.:format) authors#show
PUT /:id(.:format) authors#update
DELETE /:id(.:format) authors#destroy
在解释可以做什么时,Rails Routing Guide非常彻底。