ruby-on-rails - 刺激 Controller 未加载

标签 ruby-on-rails leaflet asset-pipeline stimulusjs hotwire-rails

我将 Rails 6 应用程序更新到 Rails 7 并使用 importmaps 和 Leaflet。我正在关注How do I use Leaflet in Rails 7? 。我成功构建了一个新应用程序并且运行良好,但升级我的旧应用程序却无法正常工作。

我错过了什么?或者尝试哪些调试步骤?

终端运行服务器中没有错误,Chrome 中也没有控制台错误。然而,在答案之后的新应用程序中,我看到了

Chrome dev mode sources 。但在更新后的应用程序中,

Upgraded app sources

在我看来 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/

相关文章:

ruby-on-rails - 从 sqlite 转换为 postgresql

ruby-on-rails - 设计/Omniauth 失败 : How to debug it?

javascript - 在 javascript Assets 中使用 Rails 辅助方法

popup - 带有选项的 Leafletjs 标记 bindpopup()

javascript - HERE map API 事件延迟

grails - 防止 Grails Asset-Pipeline 更改文件名?

ruby-on-rails - 在旧的 Rails 3-2-stable 应用程序中未加载某些 Assets

ruby-on-rails - 阐明 Elasticsearch 的有用性

ruby-on-rails - 如何在错误页面(404、500 ...)上使用图像?

javascript - 如何使用 require 导入带有 react leaflet 的自定义图标?