【问题标题】:Adding external js files on Rails 6在 Rails 6 上添加外部 js 文件
【发布时间】:2020-01-17 05:21:08
【问题描述】:

我在app->javascript->packs下创建了一个名为“custom”的文件夹,并放置以下外部js:

  • metisMenu.min.js
  • startmin.js

然后在 app->javascript->packs->application.js 下我需要上面提到的 js 插件:

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("custom/metisMenu.min").start()
require("custom/startmin").start()
require("channels")


import 'bootstrap'
import './stylesheets/application.scss'

不幸的是,这仍然不起作用。知道我做错了什么吗?

由于 Rails 6 正在使用 webpacker,是否可以将所有自定义 css 放在 app->javascript->packs->stylesheets(文件夹)而不是 assets->stylesheets 下?

【问题讨论】:

  • 不是这样工作的吗? require("custom/startmin")

标签: ruby-on-rails ruby


【解决方案1】:

您可以像这样添加自定义 js 文件:

  1. 将你的js文件添加到app/javascript文件夹

    app/javascript/custom/metisMenu.min.js
    app/javascript/custom/startmin.js
    
  2. 需要app/javascript/packs/application.js中的js文件

    require("@rails/ujs").start()
    require("turbolinks").start()
    require("@rails/activestorage").start()
    
    # custom js files
    require("custom/metisMenu.min")
    require("custom/startmin")
    
  3. <%= javascript_pack_tag 'application' %> 添加到application.html.erb

更新

您可以像这样添加 style 文件:

  1. 将您的样式文件添加到app/javascript 文件夹

    app/javascript/stylesheets/metisMenu.min.scss
    
  2. app/javascript/packs/application.js中导入样式文件

    import "stylesheets/metisMenu.min"
    
  3. <%= stylesheet_pack_tag 'application' %> 添加到application.html.erb
  4. config/webpacker.yml 中设置extract_css: true

【讨论】:

  • 这也适用于 CSS 吗?例如,我有样式表文件夹,我有 _metisMenu.min.css 和 _startmin.css 文件,我还可以通过添加 import "metisMenu.min" 将它包含在 application.scss 下吗?导入“startmin”; ???
  • @JoanBuan 是的,您可以导入 sytle 文件。我更新了答案。
  • @demir 通过 (a) 在 application.html.erb 中将 stylesheet_link_tag 更改为 stylesheet_pack_tag 和 (b) 在 config/webpacker.yml 中设置 extract_css: true 来更新您的答案
  • @LyzardKyng 我假设添加了 stylesheet_pack_tag 助手。我会更新答案。
【解决方案2】:

您的文件夹需要像这样构造:

app/javascript/packs/application.js

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")

require("custom")

app/javascript/custom/index.js

require("myScript")
require("mySecondScript")

例如,myScript.jsmySecondScript.js 文件将位于同一文件夹中,即 app/javascript/custom

【讨论】:

  • 第二个sn-p不需要.js扩展
  • 这也适用于 CSS 吗?例如,我有样式表文件夹,我有 _metisMenu.min.css 和 _startmin.css 文件,我还可以通过添加 import "metisMenu.min" 将它包含在 application.scss 下吗?导入“startmin”; ???
猜你喜欢
  • 1970-01-01
  • 2020-01-08
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多