【问题标题】:Rails Vendor Assets breaks front endRails Vendor Assets 中断前端
【发布时间】:2016-09-21 23:11:32
【问题描述】:

我有一个包含许多外部资产库的应用程序。为了组织我的资产,我想将这些外部库存储在vendor/assets 文件夹中。

我的印象是这个文件夹加载了app/assets,并且对 appliation.js 和 application.scss 清单文件中文件的引用可以正常工作。

//= require some_library
*= require some_library

但是,将库从 app/assets 转移到 vendor/assets 后,我的前端无法正常工作。

将文件放回app/assets 可以解决问题。

我认为这是可以实现的,我错了吗?

是否有禁用供应商文件夹的设置?

我如何测试发生了什么?

示例

我正在使用summernote 替换文本区域。

这是app/assets 中文件的结果:

当我将文件传输到vendor/assets 时会发生这种情况:

summernote 的 JavaScript 有效,我可以使用 $(elem).summernote(),但结果不是我所期望的。

【问题讨论】:

  • 它是如何“崩溃”的?你有 404 吗?文件是否已加载但为空?错误?
  • 我将上传一个带有图像的示例并重新折叠以停止正常工作。
  • 如果$(elem).summernote() 工作,是否意味着文件实际上正在加载?你在任何地方都有 require_tree 吗?
  • 是的,我在 application.js 和 application.scss 中使用了require_tree,它也应该加载vendor
  • 如果您的 ./app/assets/javascripts/ 上有 //= require_tree .,它将需要该文件夹中的所有 Javascript 文件,而不是供应商中的。查看documentation 的更多信息。这是我的建议,不要使用 require_tree,它不能保证顺序并且它是许多错误的根源。只需根据需要手动要求每个文件,它将帮助您保持代码精简。

标签: ruby-on-rails asset-pipeline vendor


【解决方案1】:

确保您的资产路径中的application.css 中包含您需要的任何文件/文件夹。如果没有,您可能需要将以下内容添加到您的application.rb

config.assets.paths << Rails.root.join('vendor', 'assets')

【讨论】:

  • 我不会得到 Sprocket::FileNotFound 吗?
猜你喜欢
  • 1970-01-01
  • 2014-04-08
  • 2014-04-19
  • 2013-10-28
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
相关资源
最近更新 更多