0

コントローラーが必要な場合は、次のようになります

namespace :somearea do
  resources :users do
    resources :posts do
     resources :comments
    end
  end

終わり

次に、どのように名前を付けますか?次のように名前を付けても大丈夫ですか。

class SomeArea::BaseController < ApplicationController

end

class SomeArea::UsersController < SomeArea::BaseController

end

class SomeArea::Users::PostsController < SomeArea::BaseController

end

class SomeArea::Users::Posts::CommentsController < SomeArea::BaseController

end

これは私のプロジェクトの正確な階層ではありませんが、私の場合、コントローラーにどのように名前を付ける必要があるかを理解したいと思っています。

4

3 に答える 3

2

この場合のネストされたルートは、ルートの設定方法にのみ実際に適用されます。ここで行っているように、コントローラーをモジュールにネストする必要はありません。実際、そうすると、ネストされたコントローラーを見つけることができるようにルートを変更する必要があるかもしれません。私はあなたが次のことを望んでいると言います:

class SomeArea::BaseController < ApplicationController
end

class SomeArea::UsersController < SomeArea::BaseController
end

class SomeArea::PostsController < SomeArea::BaseController
end

class SomeArea::CommentsController < SomeArea::BaseController
end

編集-zeantsoiの回答で述べたように、ルートをこれほど深くネストすることは、悪い習慣と見なされるか、可能であれば少なくとも避けるべきものと見なされます。しかし、何らかの理由でこれを行う必要がある場合でも、モジュール内のすべてのクラスをコードでネストする必要はありません。それは物事をさらに面倒にするでしょう。

于 2013-06-12T12:15:43.670 に答える
0

リストした例は確かに構文的に受け入れられますが、そのような深くネストされたルートを作成することはお勧めできません。ルーティングに関する正規の Rails ガイドから:

深くネストされたリソースはすぐに扱いにくくなります...リソースは 1 レベルより深くネストしないでください。

このガイドでは、Rails ルートのネストに関するJamis Buck によるこの記事を参照しています。あなたが描いたようにルートを本当に入れ子にするつもりなら、そうすることの意味を理解するために読む価値があります.

于 2013-06-12T12:15:09.807 に答える