0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「Rails7にBootstrap5を導入した」件

Last updated at Posted at 2023-03-06

前書き

Rails7にBootstrap5を入れようと思い、公式ドキュメントの手順を踏んでみたものの各所でエラーを吐いてしまった。

エラーを回避した方法を含め、Bootstrap5の導入手順をここにまとめたい。
なお、既存のアプリに対して導入する手順なので、新規アプリ作成時に導入する方法は記載しない。

環境

WSL2
Ubuntu
Docker
Rails7
Ruby 3.1.3

実行手順

基本的には公式ドキュメントに記載の手順に従うものとする。

Gemfile
    gem 'bootstrap', '~> 5.2'
    gem 'mini_racer'

railsサーバー起動時にExecJS::RuntimeUnavailableというエラーが出る。これの対応としてmini_racerをGemfileに追記する。

[参考記事]

ターミナル
    $ docker compose build

app/assets/stylesheets/application.cssの名前を、app/assets/stylesheets/application.scssに変更する。
その後ファイル内に記載の文字列を全て削除し、以下に示すように書き換える。

app/assets/stylesheets/application.scss
    @import 'bootstrap';

importmap.rbに追記する。

config/importmap.rb
    pin "bootstrap", to: "bootstrap.min.js", preload: true
    pin "@popperjs/core", to: "popper.js", preload: true

assets.rbを書き換える。

config/initializer/assets.rb
    Rails.application.config.assets.precompile += %w(bootstrap.min.js popper.js)

railsサーバーを起動してlocalhost:3000にアクセスする。

補足

サーバー起動後、Asset was not declared to be precompiled in...というエラーページに飛ばされることがあった。

エラーメッセージの後に続く文章に示された方法を試した。
以下の内容をmanifest.jsに追記する。

app/assets/config/manifest.js
    //= link popper.js
    //= link bootstrap.min.js

補足②

ドロップダウンメニューなどが正常に動作しなかったため、その対応方法を調べた。
Javascriptの読み込みが必要で、下記に示す変更を行った。

app/javascript/application.js
    import "popper" //追記
    import "bootstrap" //追記

終わりに

railsを半年ほど前から触りはじめましたが、まだまだ勉強不足に感じます。
拙い点が目立つと思われますが、どうかご容赦を......

私と同じくrails初学者の方あるいはそうでない方でも、この記事が誰かの参考になっていれば嬉しく思います。良きエンジニア・ライフを!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?