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指南中的代码 。)