There are different ways to nest controllers, depending whether the route, the controller or both should be nested.
Nest only controller
In routes.rb
:
scope module: :cats do
resources :friends
end
- Controller:
Cats::FriendsController
- Routes:
/friends
- Index URL helper:
friends_path
Nest only routes
scope :cats do
resources :friends
end
- Controller:
FriendsController
- Routes:
/cats/friends
- Index URL helper:
friends_path
Nest both controller and routes
scope :cats, module: :cats do
resources :friends
end
- Controller:
Cats::FriendsController
- Routes:
/cats/friends
- Index URL helper:
friends_path
Namespace
A namespace
nests both controller and routes. However, it also includes the namespace in the URL helpers.
namespace :cats do
resources :friends
end
- Controller:
Cats::FriendsController
- Routes:
/cats/friends
- Index URL helper:
cats_friends_path