ruby-on-rails - Bootstrap JS - 不能在带有 js 捆绑器的 rails 7 中工作

我使用 jsbundler 和 cssbundler 运行创建,它安装了适当的文件。

$ rails new app -j esbuild --css bootstrap

我从部分引导文档创建了一个导航栏,并在 application.html.erb 上呈现

但是当我跑步时

$ ./bin/dev

当我单击下拉菜单或汉堡包按钮时,在导航栏上没有任何反应

<!--./app/views/shared/_navbar.html.erb-->
<nav class="navbar navbar-expand-lg bg-light">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav me-auto mb-2 mb-lg-0">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Link</a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
            Dropdown
          </a>
          <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
            <li><a class="dropdown-item" href="#">Action</a></li>
            <li><a class="dropdown-item" href="#">Another action</a></li>
            <li><hr class="dropdown-divider"></li>
            <li><a class="dropdown-item" href="#">Something else here</a></li>
          </ul>
        </li>
        <li class="nav-item">
          <a class="nav-link disabled">Disabled</a>
        </li>
      </ul>
      <form class="d-flex" role="search">
        <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
        <button class="btn btn-outline-success" type="submit">Search</button>
      </form>
    </div>
  </div>
</nav>

另外,我尝试了 importmap bootstrap 但似乎没有任何效果。

回答1

您需要在 application.js 中导入引导 js 文件,如下所示:

import "@hotwired/turbo-rails"
import "./controllers"
import * as bootstrap from "bootstrap"

document.addEventListener("turbo:load", () => {
  var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
  var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
    return new bootstrap.Tooltip(tooltipTriggerEl)
  })
})

参考:https://github.com/gorails-screencasts/bootstrap-css-bundling

回答2

您是否检查过所需的引导包 js 文件是否已正确加载?

与其使用资产 pipeline 不如在 application.html.erb 文件的 head 标签下添加 bootstrap 所需的 CSS 和 JS CDN 链接。我在我的实习项目中使用了它,效果非常好。

相似文章