我有一个与客户相关的网站。每个客户都可以拥有自己的主题,当某个客户的用户登录时,必须加载公司主题。在application.css.scss中,我为每个公司都有这样一行:
@import "_theme_x.css.scss";
@import "_theme_y.css.scss";
@import "_theme_z.css.scss";
当公司x的用户登录时,我如何仅加载主题x而不加载主题y和主题z?或者有更好的方法吗?谢谢!
我有一个与客户相关的网站。每个客户都可以拥有自己的主题,当某个客户的用户登录时,必须加载公司主题。在application.css.scss中,我为每个公司都有这样一行:
@import "_theme_x.css.scss";
@import "_theme_y.css.scss";
@import "_theme_z.css.scss";
theme_stylesheet
,它返回客户端正在使用的主题名称:# application.html.erb
<%= stylesheet_link_tag 'application', theme_stylesheet %>
<body class="theme-<%= theme_stylesheet %>">
...
</body>
_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
class AdministratorController < ApplicationController
include ApplicationHelper
layout :choose_layout
def index
@user = User.new
@current_user = current_user
end
end
hope you could get the idea.....