ruby-on-rails Bootstrap JS无法与Rails Importmap一起使用

mrphzbgm  于 2022-12-20  发布在  Ruby
关注(0)|答案(1)|浏览(184)

我有一个使用Importmap的Rails 7应用程序,我通过the gemdocs加载Bootstrap JS,所以我的config/importmap.rb有:

pin "popper", to: 'popper.js', preload: true
pin "bootstrap", to: 'bootstrap.min.js', preload: true

配置/初始化程序/assets.rb

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

application.js

import 'popper'
import * as bootstrap from 'bootstrap'
document.addEventListener("turbo:load", function() {
  new bootstrap.Popover(document.getElementById('example'))
})

通过数据属性激活的下拉菜单之类的东西工作得很好,但是我的自定义JS给出了错误:第一个月

anauzrmj

anauzrmj1#

如何使用importmaps初始化弹出器(工具提示)

我修改了application.js中 Bootstrap 的import语句,并修改了importmaps中的pin语句,使其与文档(链接如下)一致。

应用程序/Java脚本/应用程序. js
// app/javascripts/application.js
import "@popperjs/core";
import "bootstrap";

document.addEventListener("turbo:load", function () {
  // This code is copied from Bootstrap's docs. See link below.
  var tooltipTriggerList = [].slice.call(
    document.querySelectorAll('[data-bs-toggle="tooltip"]')
  );
  var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
    return new bootstrap.Tooltip(tooltipTriggerEl);
  });
});

注意,内部代码来自Bootstrap的文档,将初始化屏幕上的所有工具提示。

配置/导入Map.rb
pin "application", preload: true
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
pin_all_from "app/javascript/controllers", under: "controllers"

# Note: Everything above was added by default. Added these two lines:
pin "bootstrap", to: "bootstrap.min.js", preload: true
pin "@popperjs/core", to: "popper.js", preload: true

最后两行与您的代码略有不同,但它们是从the gem's docs复制粘贴而来的。
正如你所做的那样,我还必须补充以下内容:

配置/初始化程序/资产.rb
# ... default code above ...
Rails.application.config.assets.precompile += %w( bootstrap.min.js popper.js )

相关问题