0

我有一个东西博客应用程序,我想缩短我的路线。这里有:

Blog::Application.routes.draw do
  resources :categories do
    resources :articles do
      resources :comments
    end
end

rake routes命令构建以下行:

                              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"}

可以看出,每个资源都在树中排序。所以我相信,简化我的路线可能会很有趣,例如:

/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

它更干燥,不是吗?:)

Rails 3 是否提供了一种简单的方法来做到这一点,将 HTTP 动词自动映射到控制器操作?谢谢任何人。

4

1 回答 1

0

看看浅嵌套

希望这可以帮助。

于 2010-03-27T18:50:09.927 回答