0

ブログアプリを持っているので、ルートを短くしたいです。ここにあります:

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

rakerootsコマンドは次の行を作成します

                              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 に答える