我有一个用Rails 6.1编写的大型应用程序,它仍然在使用资产管道。我正在尝试将它从使用AngularJS (存储在资产管道中)转换为hotwire。我有涡轮增压,现在我想让刺激发挥作用。
它在Ruby2.7.4上,我使用的是最新的导入映射--rails (0.8.2)、turbo (0.8.3)和刺激-rails (0.7.2)。
我做了一个rails刺激:安装和rails导入图:安装,当我重新加载我的应用程序并尝试使用hello_controller刺激没有运行时,我只能在屏幕上使用'foo‘而不是"Hello!“
在我看来这是个测试
<div data-controller="hello">
foo
</div>app/javascript/控制器/hello_Controller.js
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
connect() {
this.element.textContent = "Hello World!"
}
}Gemfile;
gem 'importmap-rails',
gem 'hotwire-rails'
gem 'turbo-rails'
gem 'stimulus-rails'这是我正在为单独的hotwire视图加载的application_html.erb文件
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application_html' %>
<%= javascript_include_tag "application_html" %>
<%= turbo_include_tags %>
<%= javascript_include_tag "turbo", type: "module-shim" %>
<%= javascript_importmap_tags %>
</head>
<body>
<%= yield :javascript %>
<%= yield %>
</body>
</html>config/importmap.rb map.rb
pin "application", preload: true
pin "@hotwired/stimulus", to: "stimulus.js", preload: true
pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
pin_all_from "app/javascript/controllers", under: "controllers"
pin "@hotwired/turbo-rails", to: "turbo.js"app/javascript/application.js
import "controllers"
import "@hotwired/turbo-rails"app/javascript/controllers/application.js
import { Application } from "@hotwired/stimulus"
const application = Application.start()
// Configure Stimulus development experience
application.warnings = true
application.debug = false
window.Stimulus = application
export { application }更新
如果我从我的application_html.html.erb文件中删除以下内容,那么turbo就会停止工作。
<%= javascript_include_tag "application_html" %>
<%= turbo_include_tags %>
<%= javascript_include_tag "turbo", type: "module-shim" %>更新
进一步的调试导致我认为我的导入图-rails没有正确加载。
发布于 2021-11-18 05:34:28
我在没有webpack的情况下创建了一个新的rails应用程序,并尝试让importmap和资产管道javascript同时工作,解决了我的问题。
我发现我的遗留项目的问题是;
//= link_tree ../图像//= link_directory ./样式表.css //= link_tree ./.././javascript .js //= link_tree ././../供应商/javascript .js //= link_tree ../javascript .js
cd应用程序/资产/javascripts application.js application.js
从…
<%= javascript_include_tag "application“%>
至
<%= javascript_include_tag "application_angularjs“%>
<%= turbo_include_tags %> <%= javascript_include_tag "turbo",输入:“模块-shim”%>
这一切都实现了,importmap地图开始工作,我的刺激hello控制器示例也开始工作。
发布于 2022-03-11 16:12:35
在向Rails 6应用程序添加hotwire/ similar /importmap映射时,在研究类似问题时发现了这个问题。这就是我所犯的错误
Sprockets::Rails::Helper::AssetNotPrecompiledError
Asset was not declared to be precompiled in production.
Add `Rails.application.config.assets.precompile += %w( controllers/hello_controller.js )` to `config/initializers/assets.rb` and restart your server在完成了地图7的答案中列出的步骤之后,错误仍在发生。最后发现链轮在3.7版上。升级到链轮4后,错误消失,导入图开始工作。
https://stackoverflow.com/questions/69997831
复制相似问题