在Rails 3.1资产管道中调用媒体特定css的正确方法

时间:2012-02-20 06:41:25

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

如果使用Rails 3.1资产管道,调用特定媒体(即打印,屏幕等)css的正确/ rails /最佳实践方法是什么?我知道之前已经问过这个问题,但是我看到的所有解决方案看起来都非常糟糕,而不是我所期待的优雅的Rails解决方案。

据我所知,建议的方法是设置stylesheets文件夹,如下所示:

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

application.css的内容是

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

application-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?什么被认为是最佳实践?我做错了什么?

谢谢你的时间!

1 个答案:

答案 0 :(得分:16)

问题是方法调用的语法。

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

在您的代码中,您分配了一个名为media

的局部变量