2012-02-20 47 views
20

如果使用Rails 3.1資產管道,調用特定媒體(即打印,屏幕等)CSS的正確/ rails/best practices方法是什麼?我知道這已經被問過,但是我所看到的所有解決方案都顯得非常黑客,而不是我所期望的優雅的Rails解決方案。在Rails 3.1資產管道中調用媒體特定css的正確方法

據我所知道的,建議的方法是建立在樣式表文件夾,如下所示:

assets 
-stylesheets 
--application.css 
--application-print.css 
--print 
---custom-print.css 
--screen 
---custom-screen.css 

的application.css被

/* 
*= require_self 
*= require_tree ./screen 
*/ 

申請而內容的內容print.css是

/* 
*= require_self 
*= require_tree ./print 
*/ 

然後在佈局中包含以下內容

<%= stylesheet_link_tag 'application', media = 'screen, projection' %> 
<%= stylesheet_link_tag 'application-print', media = 'print' %> 

好吧,到目前爲止好。

但在我的情況下custom-print.css正在屏幕上應用,並且沒有css被應用於打印輸出。

此外,這種方法似乎影響從CSS調用的圖像。即不是在資產/圖像中尋找圖像,而是在資產/樣式表/屏幕上尋找圖像。這裏可能還有其他的東西,因爲它似乎只是受到影響的javascript css。我會再做一些檢查並報告回來。

所以我的問題是,你如何處理Rails資產管道中媒體特定的CSS?什麼被視爲最佳實踐?我做錯了什麼?

謝謝你的時間!

回答

16

問題是方法調用的語法。

stylesheet_link_tag 'application', :media => 'screen, projection' 
stylesheet_link_tag 'application-print', :media => 'print' 

在你的代碼被分配到名爲media

+0

DOH一個局部變量!謝謝! – 2012-02-20 08:33:10

+4

您也可以使用'@media print {...}'(IE9 +)。另外,爲了生產,你可能需要在'config/production.rb'中添加'config.assets.precompile + =%w(application-print.css)'(就像我必須爲Heroku做的那樣)。 – manafire 2014-04-22 17:11:08

+0

@fullsailor這應該在哪裏?在'application.html.erb'中? – mmcrae 2015-02-17 22:35:17

相關問題