Railsでネームスペース(namespace)を使ってアドミン画面を開発する方法をざっくりまとめます。
アドミン画面のURLをhttp://example.com/admin/*******といった具合にadminディレクトリ配下で展開したいとした場合の実装方法です。
アドミン画面用のコントローラー
まずアドミン版のapplication_controller.rbであるadmin_controller.rbを作成しておきます。アドミン画面では、ユーザー向けの画面とは異なる機能を実装していきますので、application_controller.rbと分けておいたほうが良いかと思います。
rails g controller admin
アドミン画面では、適応するレイアウトファイルがユーザー向けの画面と異なると思いますので、views/layouts配下にアドミン画面用のレイアウトファイルを作成し、admin_controller.rbで適応しておきます。また、ログインしていない状態でアクセスしたときのリダイレクト先URLも、アドミンログイン用の画面に設定等もするでしょう。
class AdminController < ApplicationController layout "admin" protected def not_authenticated redirect_to "/admin/login" end end
次にアドミン画面のログイン用のコントローラーを作成してみます。adminというネームスペースを設定してコントローラーを作成すると、app/controllers/admin配下でコントローラーファイルが作成されます。
rails controller admin::user_sessions
admin::user_sessionsではAdminControllerを継承します。
class Admin::UserSessionsController < AdminController skip_before_action :require_login, except: [:destroy], raise: false def new 省略 end def create 省略 end def destroy 省略 end end
アドミン画面のログイン機能は、ユーザーがアドミンか通常ユーザーかなど、ユーザータイプを判定することが必要です。下記の記事でその実装方法をまとめています。
参考:Railsアプリでenumでユーザー属性別にログイン後のページ遷移を振り分ける
こんな感じで、アドミン画面用のコントローラーをどんどん作成していきます。
ルーティング
routes.rbでは、namespaceを使って下記のような感じで、admin配下でURLが展開するように設定します。
get "/admin/login" => "admin/user_sessions#new" namespace :admin do resources :user_sessions, only: [:create, :destroy] resources :dashboards end
これで、http://example.com/admin/dashboardsなどといったURLとなります。
参考:Rails(5)namespace でファイルを分ける方法
Ruby on Railsをこれから本格的に勉強したい人は「エンジニアになるための600時間のプログラミング学習に耐え抜くコツ」という記事がおすすめです。