我正在尝试使用资产管道,并希望拥有多个清单文件。目前我有application.css清单文件和admin_area.css清单文件。其中一个堆栈答案建议删除application.css清单,但它不会解决我的意图。
当前错误消息:
验证#spanboard中的Sprockets :: CircularDependencyError 已经需要projectfolder / app / assets / stylesheets / admin_area.css
我目前的rails版本是:4.1.5
还请建议解决方案,以获得多个javascript清单文件。
提前谢谢。答案 0 :(得分:1)
如果你的两个清单中都有require_tree .
指令 - 其中一个试图要求另一个清单,另一个会先尝试要求,这会导致循环错误。
相反,您应明确要求清单中的资产。
答案 1 :(得分:0)
Manifest file:
如果您查看docs
,就会说
Sprockets使用清单文件来确定要包含和提供的资产。这些清单文件包含指令 - 指示Sprockets为了构建单个CSS或JavaScript文件而需要哪些文件
所以在简短的rails资产管道中预编译你的所有资产,比如单个文件中的css,js(所有css文件都有一个文件,所有js都有一个js文件)。通过这样做,页面的加载时间显着缩短,因为您的浏览器减少了单独获取这些文件的请求。
拥有多个清单文件:
在某些情况下,例如你的你的应用程序与< = IE8兼容,那么你可能想拥有多个清单文件,因为IE只允许你的一些固定大小的文件样式并忽略您的其他样式
要实现此目的,请执行以下步骤:
一个。 从您的application.css文件中删除require_tree。 ,因为它需要app / assets / stylesheets中存在的所有样式,因此您应该要求每个文件单独。
湾 如果Production
您需要预编译资产 ,那么您必须通过
#config/application.rb or config/environments/production.rb
Rails.application.config.assets.precompile += ['admin_area.css', 'other.css', 'some_file.js']
您的错误:
验证中的Sprockets :: CircularDependencyError#dashboard projectfolder / app / assets / stylesheets / admin_area.css已被要求
您的错误清楚地表明您有一个循环依赖,意味着您的某个文件正在尝试加载其他资源,而另一个正在尝试加载第一个创建循环依赖的资源 < / strong>即可。正如@MikDiet
在他的回答中已经提到的那样, 在两个css文件中都有require_tree .
。