相关疑难解决方法(0)

使用Rails 3.1资产管道有条件地使用某些css

我正在使用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)

这可行,但它不是特别漂亮.我已经做了几个小时的搜索甚至到目前为止,但我希望有一些更容易的方法,我刚刚错过了.如果我甚至可以有选择地渲染某些目录(不包括子目录),那么整个过程就会变得不那么严格.

谢谢!

css ruby-on-rails-3.1 sprockets asset-pipeline

166
推荐指数
2
解决办法
4万
查看次数

每个动作的Rails布局?

我对某些操作使用不同的布局(主要用于大多数控制器中的新操作).

我想知道指定布局的最佳方法是什么?(我在同一个控制器中使用3个或更多不同的布局)

我不喜欢用

渲染:layout =>'name'

我喜欢这样做

layout'name',:only => [:new]

但我无法使用它来指定2个或更多不同的布局.

例如:

当我在同一个控制器中调用布局2次,使用不同的布局名称和不同的选项时,第一个被忽略 - 这些操作不会显示在我指定的布局中.

注意:我正在使用Rails 2.

ruby-on-rails

160
推荐指数
7
解决办法
7万
查看次数

资产管道:不包括admin.css文件

我将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文件,但我需要一种方法将其从用户界面中排除.

ruby-on-rails asset-pipeline

26
推荐指数
2
解决办法
2万
查看次数

在Rails 3.1资产管道中调用媒体特定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?什么被认为是最佳实践?我做错了什么?

谢谢你的时间!

css ruby-on-rails asset-pipeline

20
推荐指数
1
解决办法
6424
查看次数