在资产管道的Rails文档中,它声明:
Rails 3.1及更高版本中的默认行为是连接所有内容 文件分为一个主文件,每个文件用于JS和CSS。但是,你可以 如果需要,单独的文件或文件组(见下文)
如何将文件分成指定的组?例如,如果我有一个也有管理区域的应用程序,我想创建三个编译文件:
shared.css(前端和后端都使用此)
application.css(仅限前端)
admin.css(仅限后端)
默认将我的所有文件合并到application.css中。
答案 0 :(得分:5)
您需要为每个区域创建一个清单。例如:
<强> admin.css:强>
/*
*= require shared/nomalize
*= require shared/960.css
*= require admin/base
*= require admin/tables
*/
<强> shared.css:强>
/*
*= require shared/nomalize
*= require shared/960.css
*= require public/base
*= require public/branding
*/
您可以自由创建用于保存共享,公共和管理CSS的文件夹,并根据需要提供这些文件夹。您必须从任何清单中删除require_tree指令
在布局中引用这些:
<%= stylesheet_link_tag "application" %>
<%= stylesheet_link_tag "admin" %>
并将附加清单添加到预编译数组中:
config.assets.precompile += ['admin.js', 'admin.css']
答案 1 :(得分:3)
显然,我的阅读理解非常缺乏(tl; dr)。看来,当你使用
stylesheet_link_tag 'application'
我查看了 app / assets / stylesheets / application(css | sass)以获取一个清单文件,该文件定义了要包含的工作表。
所以我可以使用
stylesheet_link_tag 'admin'
在我的后端寻找那个清单。所以这就是我的资产结构看起来如何:
/app
/assets
/stylesheets
admin.css
application.css
/admin
screen.css
/application
screen.css
/shared
layout.sass
reset.css
typography.sass
admin.css和application.css是我的清单,它们分别如下所示:
/** admin.css
*= require_self
*= require shared/reset
*= require shared/layout
*= require shared/typography
*= require admin/screen
*/
/** application.css
*= require_self
*= require shared/reset
*= require shared/layout
*= require shared/typography
*= require application/screen
*/
您可以看到每个只引用共享工作表,然后需要特定于上下文的工作表。