LoginSignup
4
4

ルーティングのnamespaceとは??

Posted at

Ruby on Railsを使ってアプリケーションを開発していると、namespaceという単語を耳にすることが多くあります。ここでは、特にルーティングのコンテキストでのnamespaceについて説明します。

namespaceとは何か?

namespaceとは、ルーティングを一定の範囲(名前空間)でグループ化するための方法です。これにより、同じコントローラー名やアクション名を異なる範囲で使い分けることができます。

namespaceの基本的な使用法

例えば、管理者向けのページを作成する際には、namespaceを用いてadminという名前空間を作成します。

routes.rb
namespace :admin do
  resources :users
end

上記のようにルーティングを設定すると、Admin::UsersControllerが作成され、その中にあるアクションへのルーティングが設定されます。また、ビューもapp/views/admin/usersディレクトリの下に作成します。

namespaceの利点

namespaceを使用することで、以下のような利点があります。

コントローラーやビューを整理しやすくなります。例えば、管理者向けのページと一般ユーザー向けのページを分けることができます。
URLがわかりやすくなります。例えば、/admin/usersというURLが管理者向けのユーザー管理ページであることを明示的に示すことができます。

注意点

ただし、namespaceを使用する際には、以下の点に注意が必要です。

コントローラーはnamespaceで指定した名前のディレクトリの下に作成する必要があります。例えば、上記の例ではAdmin::UsersControllerapp/controllers/admin/users_controller.rbとして作成します。
namespaceでグループ化したルーティングのコントローラー内で使用するヘルパーメソッド(例えば、form_withやlink_to)はnamespaceを考慮に入れる必要があります。例えば、form_with model: [@admin, @user]のように指定します。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4