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

我将Rails 3.0应用程序升级到Rails 3.1,其中涉及到这个

/* *= require_self *= require_tree . */ 

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

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

之前曾问过类似的问题,你应该检查一下 。

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

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

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

可以在本指南中找到示例和更多详细信息。

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

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

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

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

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

 /* *= require bootstrap *= require_self */ 

bootstrap.css也将被排除,没有require可以解决这个问题! 照顾好这个;)

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

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

您可能必须在管理员方面做类似的事情。 我碰巧使用Administrate gem,它知道在哪里可以找到自己的资产。

在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 %>