资产管道:不包括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 %>