首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 6.1刺激措施没有装载资产管道

Rails 6.1刺激措施没有装载资产管道
EN

Stack Overflow用户
提问于 2021-11-17 01:09:01
回答 2查看 1.8K关注 0票数 2

我有一个用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!“

在我看来这是个测试

代码语言:javascript
复制
<div data-controller="hello">
  foo
</div>

app/javascript/控制器/hello_Controller.js

代码语言:javascript
复制
import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  connect() {
    this.element.textContent = "Hello World!"
  }
}

Gemfile;

代码语言:javascript
复制
gem 'importmap-rails',
gem 'hotwire-rails'
gem 'turbo-rails'
gem 'stimulus-rails'

这是我正在为单独的hotwire视图加载的application_html.erb文件

代码语言:javascript
复制
<!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

代码语言:javascript
复制
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

代码语言:javascript
复制
import "controllers"
import "@hotwired/turbo-rails"

app/javascript/controllers/application.js

代码语言:javascript
复制
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
复制
<%= javascript_include_tag "application_html" %>
<%= turbo_include_tags %>
<%= javascript_include_tag "turbo", type: "module-shim" %>

更新

进一步的调试导致我认为我的导入图-rails没有正确加载。

EN

回答 2

Stack Overflow用户

发布于 2021-11-18 05:34:28

我在没有webpack的情况下创建了一个新的rails应用程序,并尝试让importmap和资产管道javascript同时工作,解决了我的问题。

我发现我的遗留项目的问题是;

  1. I错过了manifest.js

//= link_tree ../图像//= link_directory ./样式表.css //= link_tree ./.././javascript .js //= link_tree ././../供应商/javascript .js //= link_tree ../javascript .js

  1. 将资产管道中的application.js重命名为application_angularjs.js

cd应用程序/资产/javascripts application.js application.js

  1. 在application.html.erb中更改行(从,到)

从…

<%= javascript_include_tag "application“%>

<%= javascript_include_tag "application_angularjs“%>

  1. 删除application_html.erb中的额外行

<%= turbo_include_tags %> <%= javascript_include_tag "turbo",输入:“模块-shim”%>

这一切都实现了,importmap地图开始工作,我的刺激hello控制器示例也开始工作。

票数 3
EN

Stack Overflow用户

发布于 2022-03-11 16:12:35

在向Rails 6应用程序添加hotwire/ similar /importmap映射时,在研究类似问题时发现了这个问题。这就是我所犯的错误

代码语言:javascript
复制
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后,错误消失,导入图开始工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69997831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档