ActionView :: Template :: Error(960.css未预编译)
我有一个iframe,它呈现部分并且不是主应用程序布局或资产管道的一部分。
我想要包含一些样式表,但是我收到此错误:
ActionView::Template::Error (960sm.css isn't precompiled):
Rails 3.1 Heroku
未包含在清单中的样式表(直接通过名称或间接通过require_tree)未预编译,因此无法在生产中访问。
您需要将工作表添加到要在环境application.rb中预编译的项目列表中。
config.assets.precompile + = ['960sm.css']
然后在视图中访问它:
stylesheet_link_tag( '960sm')
您可能更愿意通过将.scss添加到文件名来调整扩展名,而不是管理CSS文件列表。
因此, 960sm.css将变为960sm.css.scss 。
这不应该破坏任何东西,因为有效的CSS是有效的SCSS。
如果您有很多独立资产,那么不要将每个资产添加到列表中,而是像这样
config.assets.precompile += ['960sm.css']
您可能只想预编译所有内容 ,如下所示:
def precompile?(path) %w(app lib vendor).each do |asset_root| assets_path = Rails.root.join(asset_root, 'assets').to_path return true if path.starts_with?(assets_path) end false end # Precompile all assets under app/assets (unless they start with _) Rails.application.config.assets.precompile << proc do |name, path| starts_with_underscore = name.split('/').last.starts_with?('_') unless starts_with_underscore path = Rails.application.assets.resolve(name).to_path unless path # Rails 4 passes path; Rails 3 doesn't precompile?(path) end end
(基于Rails指南中的代码 。)