📌
namespaceブロックの内側でnamespaceの外側のコントローラにルーティングしたい
結論
/
をつけて絶対パスで指定する。
namespace :admin do
get :articles, to: 'articles#foo' # => Admin::ArticlesController#fooを使う
get :users, to: '/users#foo' # => UsersController#fooを使う
end
namespaceで楽したい
namespace
ブロックの中でルーティングを定義すると、namespaceとして指定したパスの配下では、そのパスと同名のモジュールに属するコントローラーを利用する用になる。管理画面を作るときに重宝する。
namespace :admin do
# GET /admin/usersをAdmin::UsersController#fooにルーティングする
get :users, to: 'users#foo'
end
抜け出したいこともある
管理者にしかアクセスできないユーザー側の画面が存在するような場合、namespaceはadminだがコントローラーはAdmin配下では無いようにしたい事がある。
つまり、/admin/users
をUsersController#foo
にルーティングしたい。
このような場合、to
で指定するコントローラー名の先頭に/
をつけると絶対パスによる指定ができる。
namespaceブロックの内部で異なるコントローラ名前空間を使いたい場合、「get '/foo', to: '/foo#index'」のような絶対コントローラパスを指定することもできます。
namespace :admin do
# GET /admin/usersをUsersController#fooにルーティングする
get :users, to: '/users#foo'
end
Discussion