我有一个呈现部分的iframe,而不是主应用程序布局或资产管道的一部分。ActionView :: Template :: Error(960.css未预编译)
我想包括一些样式表,但是我得到这个错误:直接通过名称或
ActionView::Template::Error (960sm.css isn't precompiled):
的Rails 3.1 的Heroku未包括在清单
我有一个呈现部分的iframe,而不是主应用程序布局或资产管道的一部分。ActionView :: Template :: Error(960.css未预编译)
我想包括一些样式表,但是我得到这个错误:直接通过名称或
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')
而是管理的CSS文件的列表,你可能更愿意简单地通过增加.scss到文件名调节延伸。
因此,960sm.css将成为960sm.css.scss。
这不应该破坏任何有效的CSS是有效的SCSS。
这很好,但请记住*不*要在预编译列表中添加.scss。 “总是指定一个[以.js或.css结尾的预期编译文件名](http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets),即使您想将Sass或CoffeeScript文件添加到预编译阵“。 – AlexChaffee
如果你有很多独立的资产,然后而不是增加每一个到列表中,这样
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
感谢您帮助我理清资产管道。 – hagope
工作正常,帮了我很大忙,但是关于application.css的描述给出了关于它是如何工作的另一个想法:.../* *这是一个清单文件,将自动包含此目录中可用的所有样式表。 *和任何子目录。您可以自由地为该文件添加应用程序范围的样式,并且它们将出现在编译文件的顶部 *,但通常最好为每个样式范围创建一个新文件。 * = require_self * = require_tree。 */ –
这帮了我...几个小时后找到解决方案 – justcode