Open3

rails admin dashboard routing

naokinaoki
  1. dasboard controller を作成
rails g controller admin:dashboards
  1. def show; endを追記

  2. ルーティングを記述
    localhost:3000/ をルートとする。

scope module: :admin do
  resource :dashboard, only: :show, paht: '/'
end

controllers/admin/dashboardsをrootにするためにscope module: :adminを使用

以下のようなルーティングが追加される

dashboard GET    /     
  admin/dashboards#show
naokinaoki

subdomain

サブドメインを追加する

  1. hostsを変更
    hostsを変更することでローカルでドメインを指定することができる。
    今回は localhost:3000 -> example.com and admin.example.com を指定する
console
sudo vi /etc/hosts

localhostの下に任意のドメインを追加

/etc/hosts
127.0.0.1       localhost
127.0.0.1       example.com admin.example.com

これにより
http://localhost:3000http://example.com:3000 が同じものを表示する様になった。

naokinaoki

サブドメインによるルーティングの切り分け

  1. 開発環境でドメインを有効化
development.rb
Rails.application.configure do
  ...
  config.hosts << "example.com" << "admin.example.com"
end
  1. ルーティングの変更
routes.rb
constraints subdomain: 'admin' do
    scope module: :admin do
      resource :dashboard, only: :show, path: '/'
    end
end

constraints subdomain: 'admin'によりサブドメインでのみ表示される様に変更した。

http://admin.example.com:3000/ では表示されるが
http://example.com:3000 では表示されなくなった

参考
https://railsguides.jp/routing.html#リクエスト内容に応じて制限を加える