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

时间:2012-02-13 04:56:48

标签: ruby-on-rails asset-pipeline

我将Rails 3.0应用程序升级到Rails 3.1,其中包含了这个

/*
*= require_self
*= require_tree .
*/
application.css文件中的

。但是,有一个admin.css文件现在覆盖了主应用程序css文件。

有没有办法排除admin.css文件被包含在内?在网站的管理部分,我手动包含admin.css文件,但我需要一种方法将其从用户界面中排除。

4 个答案:

答案 0 :(得分:96)

您可以在清单中使用stub sprockets'指令,如下所示:

/*
*= require_self
*= require_tree .
*= stub admin
*/

这将排除admin.css以及其中所需的所有 css !! 所以,如果你的admin.css的清单看起来像这样:

/*
*= require bootstrap
*= require_self
*/

bootstrap.css也将被排除,require无法解决此问题!照顾好这个;)

答案 1 :(得分:4)

Similar question was asked earlier and you should check that one

Sprockets使用清单文件来确定要包含和提供的资产。这些清单文件包含指令 - 指示Sprockets为了构建单个CSS或JavaScript文件而需要哪些文件的指令。使用这些指令,Sprockets加载指定的文件,必要时处理它们,将它们连接成一个文件然后压缩它们(如果Rails.application.config.assets.compress为true)。通过提供一个文件而不是多个文件,可以大大减少页面的加载时间,因为浏览器提出的请求更少。

您可以根据需要拥有尽可能多的清单文件。例如,admin.css和admin.js清单可以包含用于应用程序管理部分的JS和CSS文件。

特别是,您可以指定单个文件,并按指定的顺序进行编译。

可以在this guide

中找到示例和更多详细信息

因此,您的新application.css将成为:

/*
 *= require styles
 *= require layout
 */

/* Other styles */

答案 2 :(得分:3)

另一种解决方案是在app/assets/stylesheets中有两个目录,例如,public目录和admin目录。

然后,在app/assets/stylesheets/application.css中,您可以将require_tree .更改为require_tree ./public

您可能需要在管理员方面做类似的事情。我碰巧使用的Administrate宝石知道在哪里找到自己的资产。

答案 3 :(得分:-1)

在config / assets.rb

中添加了解决方案
#config/assets.rb
Rails.application.config.assets.precompile  += %w(*.svg *.eot *.woff *.ttf *.gif *.png *.ico *.swf *.xap masonry.pkgd.min.js jquery.colorbox-min.js i18n/jquery.colorbox-pt-BR.js admin.css)

添加app / views / layouts / _adm_layout.html.erb

#app/views/layouts/_adm_layout.html.erb
<%= stylesheet_link_tag 'admin', media: 'all', 'data-turbolinks-track' => true %>