🍓
Rails name space
はじめに
チーム開発中の初心者です🔰
やることが多すぎて頭が追いつかず思考停止してました😀
今回作っているECサイトで管理者と会員をグループ分けをするために使う
namespaceについて簡単にまとめました🌱
rails routes
rails routesを実行することで表示される項目の復習!
「Prefix」「Verb」「URI Pattern」「Controller#Action」
項目 | 意味 |
---|---|
Prefix | パスが入った変数のようなもの |
Verb | HTTPメソッドを表します |
URI | Patternのパスにどのhttpリクエストでアクセスするかを示しています |
URI Pattern | ルーティングのパスを表します |
Controller#Action | httpリクエストでパスが送られた際に処理が行われるコントローラとアクションを表します |
#左がコントローラ名、右がアクション名を示します。 |
namespaceとは
決めた名前でルーティングのグループ分けをするための仕組み。
今回チーム開発で作成しているECサイトは、
買い物をする会員とサイトを管理する管理者が存在する。
同じURLでページの機能やデザインが違う場合、if文などで実装してしまうと、会員側・管理者側を1つのコントローラー・ビューに記載することになりコードが複雑になる!
それらを解決するのがnamespace(名前空間)🏋🏻
実装
Controller・Viewを作成する
namespaceを使用する場合は、controller名の前にnamespaceで使用するグループ名を入力する!
adminというグループ名の場合
rails g controller admin/items
基本形
rails g controller [namespaceのグループ名]/[コントローラー名]
route.rbを編集
namespace
「URI Pattern」と「Controller#Action」の2つを同時にカスタマイズしたい場合に使用
routes.eb
namespace :admin do
resources :items
end
namespaceの他の記述法
URL | ファイル構成 | |
---|---|---|
scope | 指定のパスにしたい | 変えたくない |
namespace | 指定のパスにしたい | 指定のパスにしたい |
module | 変えたくない | 指定のパスにしたい |
rails routes した時に出てくる、Prefix/URI/Patternの差!
scope
scopeは「URI Pattern」のみカスタマイズしたい場合に使用
コントローラは通常のcontroller
routes.eb
scope :admin do
resources :items
end
scope module
「Controller#Action」のみカスタマイズしたい場合に使用
特定のコントローラーを特定のディレクトリ(名前空間)内にグループ化したいが、URLにその名前空間を反映させたくない場合に便利!
routes.eb
scope module: :admin do
resources :items
end
🌱参考にさせていただいた記事
Discussion