2011-11-21 57 views
4

在Rails的文档的资产管道,它指出:使用与文件组资产管道

在Rails的3.1及以后的默认行为是对所有 文件连接成一个主文件中的每一对JS和CSS。但是,您可以根据需要单独 文件,文件或组(见下文)

你分开的文件到组指示究竟是如何?例如,如果我有一个也有管理员区域的应用程序,我想创建三个编译文件:

shared.css(前台和后台均使用此文件)
application.css (仅适用于前端)
admin.css(仅适用于后端)

默认情况下,我的所有文件都会合并到application.css中。

回答

3

显然,我的阅读理解很缺乏(tl; dr)。看来,当你使用

stylesheet_link_tag '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 
*/ 

你可以看到,每一个刚刚引用共享工作表,然后需要特定于上下文的工作表。

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

和addittional舱单添加到预编译数组:

config.assets.precompile += ['admin.js', 'admin.css'] 
+1

好记的预编译阵列上。谢谢 – typeoneerror

+0

在admin.css中,你也可以执行“require_tree ./admin”和“require_tree”。/共享“以避免单独输入文件名。 –