You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
stylesheet のマニフェストファイルを削除したことにより、アセットパイプラインが内のエラーが起きたため、
app/views/layouts/admin_login.html.erbとapp/views/admin/layouts/application.html.erbは
既存アプリのマニフェストファイルを再利用する方向に修正
Before
実現したいこと
管理画面へのログイン機能、管理画面トップページの作成したい
その後、下記のように対応
管理画面におけるマイグレとモデルの準備
#295
管理画面におけるルート側とコントローラーの実装
#300
管理画面のビュー(view)作成
#305
指定の JavaScript パッケージをインストールを取りやめて、既存のCSSを再利用
#308
Users テーブルに role カラムを追加
Users テーブルに role カラムを追加するマイグレーションファイルを作成するためにターミナルにて Users テーブルに role カラムを追加するマイグレーションファイルを生成するコマンドを実行する
生成されたマイグレーションファイルは以下のように編集
上記が反映されることで Users テーブルに role カラムが追加されることに加えて、 role カラムにはデフォルトで 0 が登録される
User モデルに enum を定義
app/models/user.rb を以下のように編集
上記の記述で role カラム(integer)の値に応じて、そのユーザーが general(一般)か admin(管理者)が判別できるようになる
先程のマイグレーションファイルの default: 0 によって role カラムが 0 のユーザーは general となる
role を admin に変更する
以下のコマンドをターミナルにて実行して、Rails コンソールを立ち上げ、現在ログインしているユーザーの role を admin に変更する
管理画面(admin)を切り出す
管理画面関連の URL・コントローラー・ビュー・アセット・etc を、以下のようにして一般ユーザー触れる部分と切り分ける
今回はまずコントローラーとURLの対応を行う
管理画面は /admin をルートとするように設定する(URL:namespaceを使ってadminを切り出し、管理画面関連はそちらに配置する。)
config/routes.rb を以下のように編集
app/controllers/配下にadminディレクトリを作成し、管理画面関連はそちらのディレクトリ配下に配置する
1. app/controllers/admin/base_controller.rb を生成・編集
以下のコマンドをターミナルにて実行する
生成された app/controllers/admin/base_controller.rb を以下のように編集する
上記の記述をした app/controllers/admin/base_controller.rb を作成し、app/controllers/admin/配下に作成するコントローラーは app/controllers/admin/base_controller.rb を継承させることで before_action :check_admin, layout 'admin/layouts/application', not_authenticated メソッドも継承する
check_admin メソッドは、ログインしているユーザーの role カラムが admin で無かった場合に指定のパスにリダイレクトさせる
not_authenticated メソッドは ApplicationController で定義されている not_authenticated を上書きしている
layout 'admin/layouts/application'の記述で、app/views/admin/layouts/配下にある application.html.erb をレイアウトとして使用する
2. app/controllers/admin/user_sessions_controller.rb を生成・編集
以下のコマンドをターミナルにて実行する
生成された app/controllers/admin/user_sessions_controller.rb を以下のように編集する
Admin::UserSessionsController は、Admin::BaseController を継承しているため、ApplicationController の require_login メソッドも継承している(Admin::BaseController は ApplicationController を継承しているため)
layout 'layouts/admin_login' の記述によって、Admin::UserSessionsController のアクションは、app/views/layouts/配下にある admin_login.html.erb が使用される
3. app/controllers/admin/dashboards_controller.rbを生成・編集
以下のコマンドをターミナルにて実行する
生成された aapp/controllers/admin/dashboards_controller.rb を以下のように編集する
Admin::DashboardsController は、Admin::BaseController を継承しているため、ApplicationController の require_login メソッドも継承している(Admin::DashboardsController は ApplicationController を継承しているため)
layout 'layouts/admin_login' の記述によって、Admin::UserSessionsController のアクションは、app/views/admin/dashboards/配下にある index.html.erb が使用される
管理画面へログインした後のダッシュボードページ画面の作成する
app/views/admin/dashboards/index.html.erb
全管理ページで共通のレイアウトを定義する
app/views/admin/layouts/application.html.erb
管理ページのフッターを定義する
app/views/admin/shared/_footer.html.erb
管理ページのヘッダーを定義する
app/views/admin/shared/_header.html.erb
管理ページのサイドバーを定義する
app/views/admin/shared/_sidebar.html.erb
ログインページのview画面を作成する
app/views/admin/user_sessions/new.html.erb
管理画面のログインページのレイアウトページを作成する
app/views/layouts/admin_login.html.erb
page_title メソッド修正する
現状ローカルホストで開くと、下記のArgumentエラーが発生する
page_titleメソッドに渡される引数の数が期待される数と合っていないから発生してるので、コードを見直して、page_titleメソッドを呼び出している部分を確認する必要がある
キーワード引数を追加し、admin の値が ture or false によって base_title が動的に変化するように修正
ロゴマークを持ってくる
app/assets/images/AdminLTELogo.pngをコピーして張りつける
application.jsにadminLTE情報を追加
下記の資料のscriptとhrefをapp/views/admin/layouts/application.html.erbに格納する
Railsのapplication.html.erbファイルは、全てのページで共有される共通のレイアウトを定義するためのファイル
今回の管理画面のJavascriptも全ての管理者ページで共有できるようにするため、公式のscriptとhrefを格納
https://adminlte.io/docs/3.2/
app/views/admin/layouts/application.html.erb
管理画面関連で使用する JavaScript のマニフェストファイルを生成・編集する
管理画面関連で使用する JavaScript のマニフェストファイル(app/javascript/admin.js)を生成して、以下のように編集
@hotwired/turbo-rails, bootstrap/dist/js/bootstrap を使用する部分は、app/javascript/application.js と同じだが、admin_teq/assets/dist/js/dashboard の一文を追加
これにより app/javascript/admin.js を読み込むと、node_modules/admin-lte/dist/js/配下にある adminlted.js も読み込まれる
管理画面関連で使用する stylesheet のマニフェストファイルを生成・編集する
管理画面関連で使用する styleshhet のマニフェストファイル(app/assets/stylesheets/admin/application.scss, app/assets/stylesheets/admin/login.scss)を生成する
app/assets/stylesheets/admin/application.scss は以下のように編集
app/assets/stylesheets/admin/login.scss は以下のように編集
dartsass の設定
config/initializers/dartsass.rb を生成して以下のように編集
対応を変更
stylesheet のマニフェストファイルとdartsass の設定を削除
管理画面関連で使用する styleshhet のマニフェストファイル(app/assets/stylesheets/admin/application.scss, app/assets/stylesheets/admin/login.scss)を削除
また、フッターも不要なので、フッターも削除
app/views/admin/shared/_footer.html.erb
javascript/admin.js
admin/login.scss
stylesheets/admin/login.scss
admin/application.scss
config/initializers/dartsass.rb
application.jsにadminLTE情報を追加を取りやめ
下記の資料のscriptとhrefをapp/views/admin/layouts/application.html.erbに格納するのを取りやめ
https://adminlte.io/docs/3.2/
app/views/admin/layouts/application.html.erb
アセットパイプラインの紐づけを変更
stylesheet のマニフェストファイルを削除したことにより、アセットパイプラインが内のエラーが起きたため、
app/views/layouts/admin_login.html.erbとapp/views/admin/layouts/application.html.erbは
既存アプリのマニフェストファイルを再利用する方向に修正
Before
After
管理画面のログインview画面のフォーマットを作成する
app/views/admin/user_sessions/new.html.erbを編集し、
既存アプリのcssフォーマットを再利用して、view画面を整える
i18nの翻訳エラーの修正
改行漏れによる翻訳不可エラーを解消するため、
config/locales/view/ja.ymlの「admin:」の改行を追加し、タイトルを「管理者画面ログイン」に修正変更
動作の確認を行う
参考にしたURL・使用したプロンプト
https://qiita.com/shouta-dev/items/2d46c68ebbe163dc0c6c
https://github.com/ColorlibHQ/AdminLTE
The text was updated successfully, but these errors were encountered: