Kürzere Rails Routen
-
22-09-2019 - |
Frage
ich eine Sache Blog-Anwendung, und ich möchte meine Routen verkürzen. Hier gibt es:
Blog::Application.routes.draw do
resources :categories do
resources :articles do
resources :comments
end
end
Rake Routen Befehl build die folgenden Zeilen:
GET /categories/:category_id/articles/:article_id/comments(.:format) {:controller=>"comments", :action=>"index"}
category_article_comments POST /categories/:category_id/articles/:article_id/comments(.:format) {:controller=>"comments", :action=>"create"}
new_category_article_comment GET /categories/:category_id/articles/:article_id/comments/new(.:format) {:controller=>"comments", :action=>"new"}
GET /categories/:category_id/articles/:article_id/comments/:id(.:format) {:controller=>"comments", :action=>"show"}
PUT /categories/:category_id/articles/:article_id/comments/:id(.:format) {:controller=>"comments", :action=>"update"}
category_article_comment DELETE /categories/:category_id/articles/:article_id/comments/:id(.:format) {:controller=>"comments", :action=>"destroy"}
edit_category_article_comment GET /categories/:category_id/articles/:article_id/comments/:id/edit(.:format) {:controller=>"comments", :action=>"edit"}
GET /categories/:category_id/articles(.:format) {:controller=>"articles", :action=>"index"}
category_articles POST /categories/:category_id/articles(.:format) {:controller=>"articles", :action=>"create"}
new_category_article GET /categories/:category_id/articles/new(.:format) {:controller=>"articles", :action=>"new"}
GET /categories/:category_id/articles/:id(.:format) {:controller=>"articles", :action=>"show"}
PUT /categories/:category_id/articles/:id(.:format) {:controller=>"articles", :action=>"update"}
category_article DELETE /categories/:category_id/articles/:id(.:format) {:controller=>"articles", :action=>"destroy"}
edit_category_article GET /categories/:category_id/articles/:id/edit(.:format) {:controller=>"articles", :action=>"edit"}
GET /categories(.:format) {:controller=>"categories", :action=>"index"}
categories POST /categories(.:format) {:controller=>"categories", :action=>"create"}
new_category GET /categories/new(.:format) {:controller=>"categories", :action=>"new"}
GET /categories/:id(.:format) {:controller=>"categories", :action=>"show"}
PUT /categories/:id(.:format) {:controller=>"categories", :action=>"update"}
category DELETE /categories/:id(.:format) {:controller=>"categories", :action=>"destroy"}
edit_category GET /categories/:id/edit(.:format) {:controller=>"categories", :action=>"edit"}
Wie man sehen kann, jede Ressource in einem Baum angeordnet. Also habe ich das glaube, wird es interessant sein könnte, meine Routen wie zum Beispiel zu vereinfachen:
/categories/ => /
/categories/:id => /:id
/categories/:category_id/articles/ => /:category_id/articles
/categories/:category_id/articles/:id => /:category_id/:id
/categories/:category_id/articles/:article_id/comments/ => /:category_id/:article_id/comments
/categories/:category_id/articles/:article_id/comments/:id => /:category_id/:article_id/:id
Es ist mehr DRY, is't es? :)
Does Rails 3 bietet eine einfache Möglichkeit, dies zu tun, mit einem HTTP-Verben Zuordnung Controller-Aktionen automatisch? Dank jemand.
Lösung
Schauen Sie sich auf flache Verschachtelung .
Hope, das hilft.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow