2012-12-18 103 views
3

我最近在我的Rails 3.2應用程序中添加了一個CSS文件,而且我正在努力處理資產管道。 目前,它說ActionView::Template::Error (pdf.css isn't precompiled)不預編譯所需文件的資產管道

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

還有什麼是必要的?

是否必須將pdf.css添加到config.assets.precompile

如果是這樣,爲什麼? require不應該照顧它嗎?

application.css

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

你是否需要pdf.css明確地在你的html模板中的某處? –

+0

是的,它被一個在[wicked_pdf](https://github.com/mileszs/wicked_pdf)gem中定義的助手調用:'wicked_pdf_stylesheet_link_tag「pdf」' – asymmetric

+0

這就是問題所在。如果你添加上面的答案,我會接受它。 – asymmetric

回答

3

你是否需要在您的html模板中明確指定pdf.css?

如解釋in the official guide to the asset pipeline所示,需要明確指定在html(清單文件外部)中的每個文件,方法是將它們添加到config.assets.precompile

+0

這不完全正確。我確實需要在我的html中需要它 - 這是[wicked_pdf gem](https://github.com/mileszs/wicked_pdf)的要求。請編輯,我會接受。 – asymmetric

+0

這個寶石應該有它自己的清單嗎?雖然顯然它不會產生這個錯誤。 –

+0

'pdf.css'文件沒有在gem中定義。閱讀[本節](https://github.com/mileszs/wicked_pdf#styles)瞭解更多信息。 – asymmetric

0

嘗試在你的application.css書面形式(順便說一句是不是應該application.css.scss?):

*= require_tree . 

這應該編譯所有樣式表。

也許你也可以嘗試:

rake assets:precompile 

它會在你的公用文件夾生成預編譯的樣式表(嗯,如果我是對的...)。然後你就可以知道你的文件是否包含在這個過程中。 (不要忘記在開發中刪除已編譯的樣式表,否則瀏覽器將始終加載此文件並且不會進行任何更改)

+0

是的,但那不是我想要的!有很多文件我不想進入資產管道。另外,[該指南說](http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives)它是'application.css':'Rails還創建了一個默認的應用程序/資產/樣式表/應用程序.css文件' – asymmetric

0

pdf.css文件中可能存在錯誤(錯字)。看看你是否能找到任何缺失的分號或括號。

-1

您需要在您的config/environments/production.rb中添加pdf.cssconfig.assets.precompile

導致這種情況的原因是假定您想將所有樣式放在同一個位置。

這也節省了預編譯的空間。

例子: 以下文件:

  • pdf.css
  • screen.css
  • print.css那麼所有

將彙編成application.css

+0

你讀過我的回答了嗎?我知道這是一個解決方案,但我也想明白爲什麼! – asymmetric

+0

添加到我的答案。 – Mab879

+1

聽起來就像你在application.css之外的其他地方使用pdf.css。看看ActionView :: Template :: Error引發的堆棧軌跡,它會告訴你你在哪裏使用pdf.css明確 – katzmopolitan

相關問題