我将Rails 3.0应用程序升级到Rails 3.1,其中包含了这个
/*
*= require_self
*= require_tree .
*/
application.css文件中的。但是,有一个admin.css文件现在覆盖了主应用程序css文件。
有没有办法排除admin.css文件被包含在内?在网站的管理部分,我手动包含admin.css文件,但我需要一种方法将其从用户界面中排除。
答案 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 %>