2012-02-20 13 views
20

Rails 3.1のアセットパイプラインを使用している場合、メディア固有の(つまり、プリント、スクリーンなど)CSSを呼び出す正しい/レール/ベストプラクティスは何ですか?私はこれが以前に尋ねられたことは知っていますが、私が見たソリューションのすべてが非常にハッキーに見えますが、私が期待しているエレガントなRailsソリューションではありません。Rails 3.1のアセットパイプラインでメディア固有のcssを呼び出す正しい方法

私の知る限り、提案されたアプローチは、次のようにスタイルシートフォルダを設定することです:application.cssの

assets 
-stylesheets 
--application.css 
--application-print.css 
--print 
---custom-print.css 
--screen 
---custom-screen.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' %> 

OK、それでも良い。

しかし、私の場合は、custom-print.cssが画面に適用されており、印刷出力にCSSが適用されていません。

また、このアプローチはcssから呼び出された画像に影響するようです。つまり、アセット/イメージ内のイメージを探す代わりに、アセット/スタイルシート/スクリーン内のイメージを探しています。影響を受けるのはjavascriptのCSSだと思われるので、ここに何か他のものがあるかもしれません。もう少し調べて報告します。

私の質問は、Railsのアセットパイプラインでメディア固有のCSSをどう扱っているのですか?ベストプラクティスと見なされるものは何ですか?そして私は何が間違っているのですか?

ありがとうございました!

答えて

16

問題は、メソッド呼び出しの構文です。あなたはmedia

+0

DOHと呼ばれるローカル変数に代入して、あなたのコードで

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

!ありがとうございました! –

+4

'@media print {...}'(IE9 +)を使うこともできます。また、プロダクションのために 'config/production.rb'に' config.assets.precompile + =%w(application-print.css) 'を追加する必要があります(私がHerokuのためにしなければならなかったように)。 – manafire

+0

@fullsailorこれはどこですか? 'application.html.erb'で? – mmcrae

関連する問題