条件加载样式表

我有一个客户网站。 每个客户端都可以拥有自己的主题,当某个客户端的用户登录时,必须加载公司主题。 在application.css.scss中,每个公司都有这样的行:

@import "_theme_x.css.scss"; @import "_theme_y.css.scss"; @import "_theme_z.css.scss"; 

当公司x的用户登录并且不加载theme_y和theme_z时,如何仅加载例如theme_x? 或者有更好的方法吗? 谢谢!

如果主题很大,您可能希望将它们与application.css分开,并在布局中有条件地加载它们。 例如,如果您在application_helper中有一个帮助程序theme_stylesheet ,它返回客户theme_stylesheet在使用的主题的名称:

 # application.html.erb <%= stylesheet_link_tag 'application', theme_stylesheet %> 

如果它们很小,我喜欢命名空间。 保持application.css不变,但修改主题以在主体上使用顶级规则。 在主体上放置标签以选择主题。 这样的美妙之处在于你可以动态地改变主题。

  ...  

_theme_x.css.scss

 body.theme-x { ... } 

你可以这样做,就像你可以先检查谁的客户端登录并应用一些

他的布局,包括不同的CSS文件,用于不同的布局。

像我一样

首先我在应用程序帮助器中创建方法,但我可以根据用户角色实现布局

可以根据客户做到。

  def choose_layout if is_admin?(current_user) or is_super_admin?(current_user) 'admin' else 'application' end 

并且在控制器调用它之前,filter将根据用户实现布局

角色

 class AdministratorController < ApplicationController include ApplicationHelper layout :choose_layout def index @user = User.new @current_user = current_user end 

结束

希望你能得到这个想法.....