我将 Rails 6 应用程序更新到 Rails 7 并使用 importmaps 和 Leaflet。我正在关注How do I use Leaflet in Rails 7? 。我成功构建了一个新应用程序并且运行良好,但升级我的旧应用程序却无法正常工作。
我错过了什么?或者尝试哪些调试步骤?
终端运行服务器中没有错误,Chrome 中也没有控制台错误。然而,在答案之后的新应用程序中,我看到了
在我看来 Controller 没有加载。
// app/javascript/application.js
import "@hotwired/turbo-rails"
import "controllers"
import "popper"
import "bootstrap"
# config/importmaps.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"
pin "jquery", to: "https://ga.jspm.io/npm:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3b514a4e5e49427b08150d150a" rel="noreferrer noopener nofollow">[email protected]</a>/dist/jquery.js", preload: true
pin "popper", to: 'popper.js', preload: true
pin "bootstrap", to: 'bootstrap.min.js', preload: true
pin "leaflet", to: "https://ga.jspm.io/npm:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="523e3733343e372612637c6b7c62" rel="noreferrer noopener nofollow">[email protected]</a>/dist/leaflet-src.js", preload: true
pin "leaflet-css", to: "https://ga.jspm.io/npm:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="8be7eeeaede7eeffa6e8f8f8cbbba5baa5bb" rel="noreferrer noopener nofollow">[email protected]</a>/dist/leaflet.css.min.js", preload: true
pin "leaflet.control.opacity", to: "https://ga.jspm.io/npm:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f79b9296919b9283d99498998385989bd9988796949e838eb7c6d9c1d9c7" rel="noreferrer noopener nofollow">[email protected]</a>/dist/L.Control.Opacity.js", preload: true
pin "leaflet.timeline", to: "https://ga.jspm.io/npm:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a2cec7c3c4cec7d68cd6cbcfc7cecbccc7e2938c968c91" rel="noreferrer noopener nofollow">[email protected]</a>/dist/index.js", preload: true
// Gemfile
ruby '3.1.2'
gem 'rails', '~> 7.0'
gem 'pg' , '~> 1.4.3'
gem "net-http"
gem 'puma'
gem 'sassc-rails'
gem "importmap-rails", "~> 1.1"
gem "turbo-rails"
gem "stimulus-rails"
gem "sprockets-rails"
gem 'bootsnap', require: false
gem 'bootstrap', '~> 5.0.0'
// app/javascript/controllers/index.js
import { application } from "controllers/application"
import { eagerLoadControllersFrom } from "@hotwired/stimulus-loading"
eagerLoadControllersFrom("controllers", application)
// app/javascript/application.js
import "@hotwired/turbo-rails"
import "controllers"
import "popper"
import "bootstrap"
最佳答案
让我猜一下,您没有更新 manifest.js
。您应该有 app/javascript
:
// app/assets/config/manifest.js
//= link_tree ../images
//= link_directory ../stylesheets .css
//= link_tree ../../javascript .js
// ^ this one
//= link_tree ../../../vendor/javascript .js
关于ruby-on-rails - 刺激 Controller 未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73861471/