我正在使用Rails 3.1.rc5构建我的第一个独立Rails应用程序.我的问题是我希望我的网站有条件地呈现各种CSS文件.我正在使用Blueprint CSS,我试图在screen.css大多数情况下渲染sprockets/rails ,print.css只有在打印时,并且ie.css只有从Internet Explorer访问该站点时.
不幸的是,清单中的默认*= require_tree命令application.css包含assets/stylesheets目录中的所有内容,并导致令人不快的CSS混乱.我目前的解决方法是一种蛮力方法,我单独指定所有内容:
在application.css中:
*= require_self
*= require home.css
...
*= require blueprint/screen.css
Run Code Online (Sandbox Code Playgroud)
在我的样式表部分(haml):
<!--[if lt IE 9]
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
![endif]-->
= stylesheet_link_tag "application"
= stylesheet_link_tag 'blueprint/print', media: 'print'
<!--[if lt IE8]]
= stylesheet_link_tag 'blueprint/ie'
![endif]-->
= javascript_include_tag "application"
Run Code Online (Sandbox Code Playgroud)
这可行,但它不是特别漂亮.我已经做了几个小时的搜索甚至到目前为止,但我希望有一些更容易的方法,我刚刚错过了.如果我甚至可以有选择地渲染某些目录(不包括子目录),那么整个过程就会变得不那么严格.
谢谢!
我对某些操作使用不同的布局(主要用于大多数控制器中的新操作).
我想知道指定布局的最佳方法是什么?(我在同一个控制器中使用3个或更多不同的布局)
我不喜欢用
渲染:layout =>'name'
我喜欢这样做
layout'name',:only => [:new]
但我无法使用它来指定2个或更多不同的布局.
例如:
当我在同一个控制器中调用布局2次,使用不同的布局名称和不同的选项时,第一个被忽略 - 这些操作不会显示在我指定的布局中.
注意:我正在使用Rails 2.
我将Rails 3.0应用程序升级到Rails 3.1,其中涉及到这个
/*
*= require_self
*= require_tree .
*/
Run Code Online (Sandbox Code Playgroud)
在application.css文件中.但是,有一个admin.css文件现在覆盖了主应用程序css文件.
有没有办法排除admin.css文件被包含?在网站的管理部分,我手动包含admin.css文件,但我需要一种方法将其从用户界面中排除.
如果使用Rails 3.1资产管道,调用特定媒体(即打印,屏幕等)css的正确/ rails /最佳实践方法是什么?我知道之前已经问过这个问题,但我看到的所有解决方案看起来都非常糟糕,而不是我所期待的优雅的Rails解决方案.
据我所知,建议的方法是设置stylesheets文件夹,如下所示:
assets
-stylesheets
--application.css
--application-print.css
--print
---custom-print.css
--screen
---custom-screen.css
Run Code Online (Sandbox Code Playgroud)
application.css的内容是
/*
*= require_self
*= require_tree ./screen
*/
Run Code Online (Sandbox Code Playgroud)
application-print.css的内容是
/*
*= require_self
*= require_tree ./print
*/
Run Code Online (Sandbox Code Playgroud)
然后在布局中包含以下内容
<%= stylesheet_link_tag 'application', media = 'screen, projection' %>
<%= stylesheet_link_tag 'application-print', media = 'print' %>
Run Code Online (Sandbox Code Playgroud)
好的,到目前为止一切顺利.
但是,在我的情况下,custom-print.css正在屏幕上应用,并且没有css应用于打印输出.
此外,这种方法似乎影响从css调用的图像.即不是在资产/图像中查找图像,而是在资产/样式表/屏幕中查找图像.这里可能还有其他东西,因为它似乎只是受到影响的javascript css.我会做更多的检查和报告.
所以我的问题是,你如何在Rails资产管道中处理媒体特定的css?什么被认为是最佳实践?我做错了什么?
谢谢你的时间!