LoginSignup
3
3

Rails7 でbootstrapを使ってModalを動かす

Last updated at Posted at 2024-02-29

環境

  • Rails 7.1.3
  • ruby 3.2.1
  • bootstrap 5.3.2

目的

railsでbootstrapを動かす

Rails tutorialを終えて、その他にもハンズオン形式のサイトに取り組んでいたらbootstrapを使ったモーダルなどが動作しない・・・
ということでとりあえず動くようになるまで調べた結果を書いていきます。

※間違えていたらマジで色々教えてください

参考サイト
https://nobrainerprogramming.com/rails-7-modal-forms-with-hotwire-and-bootstrap/

新しいプロジェクトを作る

まずはコマンド

rails new modal

Gemfileに必要なgemを書く

Gemfile
gem 'bootstrap' 
gem 'mini_racer'
gem 'sassc-rails'

sassc-railsは古いらしい
darts-scssというのがrails7では推奨みたいなので、調べて理解したら記事作るかも

gemをインストールする

bundle install

ファイルの名前を変更する

app/assets/stylesheets/application.css
↓ 変更後
app/assets/stylesheets/application.scss

※.cssが.scssになってます

★bootstrapのデザインを使えるようにする(css)

そのファイルの中に書く

application.scss
@import "bootstrap";  

これでbootstrapのデザインが使えます
試しにどこかアクセスして表示が確かめれるViewファイルに書いてみます

<h1 class="text-info">bootstrap</h1>

無事色が変わればOK!

★ bootstrapのモーダルなど動くようにする(js)

あまり詳しくないのですが、モダールとか他のなんやかんやはbootstrap.js的ななんかjavascript使うやつもあるみたいなんでそれ動くようにします

rails7標準のimportmapを使います

bin/importmap pin bootstrap

これを入力するとこれらが追加されます

pin "bootstrap"
pin "@popperjs/core", to: "@popperjs--core.js"

そして追記

application.js
import "@popperjs/core"
import "bootstrap"

5.3らへんは、なんかクロームのデベロッパーツールみたらめっちゃエラー出るからpopperが原因みたいなので、こうしないといけないという記事を発見

参考URL:
https://bootstrap-guide.com/getting-started/javascript

参考記事から抜粋

公式からの抜粋
"imports": {
        "@popperjs/core": "https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/esm/popper.min.js",
        "bootstrap": "https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.esm.min.js"
}

結論:要はこうすればいいのか...

importmap.rb
pin "@popperjs/core", to: "https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/esm/popper.min.js"

これでモーダルなどが動くのでWeb上に転がってるハンズオンサイトも進めれました!

popperってなんやねん・・・・


初めての記事を書いてみました。
自分で見直す為と、自分が躓いた部分で誰か参考になればという想いで書いてみました。

3
3
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
3
3