目次
【Rails6】AdminLTE3の導入手順
AdminLTEとは、Bootstrapをベースとして作られた管理画面の制作でよく利用されるCSSのフレームワークです。
本記事では、Ruby on Rails(Rails6)で AdminLTE3を導入する手順を紹介しています。
スポンサーリンク
AdminLTEのインストール
まずは、yarnでAdminLTEをインストールします。
yarn add admin-lte
PS C:\ruby\adminlte_sample> yarn add admin-lte yarn add v1.22.4 [1/4] Resolving packages... warning admin-lte > popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 warning admin-lte > bootstrap-colorpicker > popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 warning admin-lte > tempusdominus-bootstrap-4 > popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 warning admin-lte > pdfmake > pdfkit > fontkit > babel-runtime > core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3. ・・・(省略)・・・ Done in 28.28s.
AdminLTEのインストールが完了すると、Railsアプリ直下に「node_modules」ディレクトリが作成されます。
また、package.jsonを確認するとインストールされたAdminLTEのバージョンを確認することができます。
{
"name": "adminlte_sample",
"private": true,
"dependencies": {
"@rails/actioncable": "^6.0.0",
"@rails/activestorage": "^6.0.0",
"@rails/ujs": "^6.0.0",
"@rails/webpacker": "4.2.2",
"admin-lte": "^3.0.5",
"turbolinks": "^5.2.0"
},
"version": "0.1.0",
"devDependencies": {
"webpack-dev-server": "^3.11.0"
}
}
コントローラーの作成
AdminLTEの表示確認をするためのコントローラーを作成します。
今回の例では「test」というコントローラーと「starter」というアクションを作成しています。
PS C:\ruby\adminlte_sample> rails g controller test starter
create app/controllers/test_controller.rb
route get 'test/starter'
invoke erb
create app/views/test
create app/views/test/starter.html.erb
invoke test_unit
create test/controllers/test_controller_test.rb
invoke helper
create app/helpers/test_helper.rb
invoke test_unit
invoke assets
invoke scss
create app/assets/stylesheets/test.scssAdminLTEのstarter.htmlを反映
AdminLTE 適用のサンプルとして付属してくる「node_modules/admin-lte/starter.html」のbodyの中身を「app/view/test/starter.html.erb」にコピペします。
■app/view/test/starter.html.erb
<div class="wrapper">
<!-- Navbar -->
<nav class="main-header navbar navbar-expand navbar-white navbar-light">
<!-- Left navbar links -->
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a>
</li>
<li class="nav-item d-none d-sm-inline-block">
<a href="index3.html" class="nav-link">Home</a>
</li>
<li class="nav-item d-none d-sm-inline-block">
<a href="#" class="nav-link">Contact</a>
</li>
</ul>
・・・(省略)・・・
</div>
<!-- ./wrapper -->スポンサーリンク
また「app/view/layouts/application.html.erb」にも「node_modules/admin-lte/starter.html」のhead情報、bodyのclassを適用します。※jsとcssの読み込みは後で設定するため、ここには記述しません。
■app/view/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>AdminlteSample</title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
<!-- Google Font: Source Sans Pro -->
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
</head>
<body class="hold-transition sidebar-mini">
<%= yield %>
</div>
</html>
AdminLTEのjs/cssファイルの読み込み設定
「node_modules/admin-lte/starter.html」のヘッダで読み込んでいた「js」と「css」を下記のファイルに設定を追記して読み込めるようにします。
■app/asset/stylesheets/application.css
@import 'admin-lte/plugins/fontawesome-free/css/all.min'; @import 'admin-lte/dist/css/adminlte.min';
■app/javascript/packs/application.js
require("admin-lte");■app/config/webpack/environment.js
const webpack = require('webpack')
environment.plugins.prepend('Provide',
new webpack.ProvidePlugin({
$: 'admin-lte/plugins/jquery/jquery',
jQuery: 'admin-lte/plugins/jquery/jquery',
})
)画像ファイルをassetsに配置
このままだと画像ファイルが読み込まれないので(サンプル画像なので不要ですが、念のため読み込めるように対応)「node_modules/admin-lte/dist/img」配下にある画像を「app/asset/images」の配下にコピーします。
そして「app/view/test/starter.html.erb」で画像を読み込んでいる個所を下記のように修正します。
[変更前]
<img src="dist/img/user1-128x128.jpg"
↓
[変更後]
<img src="<%= image_path 'user1-128x128.jpg'%>
動作確認
それでは、Railsのサーバーを起動して動作確認してみます。
rails s
「 http://localhost:3000/test/starter 」にアクセスして次のように表示されれば完了です。

終わりに
本記事では「Rails6でAdminLTEを導入する方法」について紹介しました。
次回は、実際にAdminLTEを利用して「一覧画面」を作成する方法について紹介します。
- 準備編:Ruby on Railsの開発環境構築
- 入門編:Ruby on Railsで”Hello World”を作成する
- 基本編1:超便利ScaffoldでCRUDを作成する方法
- 基本編2:入力チェック(validates)の実装方法
- デザイン編1:RailsでBootstrapを導入する方法
- デザイン編2:RailsでAdminLTEを導入する方法
- 実践編1:Rails + AdminLTEで一覧画面を作成する
- 実践編2:Rails + AdminLTEで登録画面を作成する
- 実践編3:Rails + AdminLTEで編集画面を作成する
- 実践編4:Rails + AdminLTEで詳細画面を作成する
