资产管道未预编译所需文件

时间:2012-12-18 16:33:55

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

我最近在我的Rails 3.2应用程序中添加了一个CSS文件,我正在努力应对资产管道。 目前,它说ActionView::Template::Error (pdf.css isn't precompiled)

我在= require pdf文件中添加了app/assets/stylesheets/application.css

还有什么必要吗?

我是否必须将pdf.css添加到config.assets.precompile

如果是这样,为什么? require不应该照顾它吗?

我的application.css

/*
*= require_self
*= require chosen
*= require pdf
*= require_tree ./screen
*/

4 个答案:

答案 0 :(得分:3)

您是否在html模板中的某处明确要求使用pdf.css?

正如in the official guide to the asset pipeline所解释的那样,html中明确需要的每个文件(清单文件之外)需要通过将它们添加到config.assets.precompile来编译。

答案 1 :(得分:0)

尝试在application.css中写一下(顺便说一下,它不应该是application.css.scss吗?):

*= require_tree .

这应该编译所有的样式表。

也许你也可以试试:

rake assets:precompile

它会在你的公共文件夹中生成预编译的样式表(好吧,如果我是对的......)。然后,您可以知道您的文件是否包含在流程中。 (不要忘记在开发中删除已编译的样式表,否则浏览器将始终加载此项并且不会对您进行任何更改)

答案 2 :(得分:0)

pdf.css文件中可能存在错误(拼写错误)。看看你是否能找到任何遗漏的半冒号或括号。

答案 3 :(得分:-1)

您需要在pdf.css中将config.assets.precompile添加到config/environments/production.rb

这样做的原因是rails假定您想要在一个地方放置所有样式。

这也节省了预编译的空间。

实施例: 以下文件:

  • pdf.css
  • screen.css
  • print.css
然后

将全部编译成application.css