我有一个有客户的网站。每个客户端都可以有自己的主题,当某个客户端的用户登录时,必须加载公司主题。在 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 ,它返回客户端正在使用的主题的名称:

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

如果它们很小,我喜欢命名空间。保持 application.css 不变,但修改主题以在主体上使用顶级规则。在正文上放置一个标签以选择主题。这样做的好处是您可以动态更改主题。
<body class="theme-<%= theme_stylesheet %>">
  ...
</body>

_theme_x.css.scss
body.theme-x {
  ...
}

10-05 20:54
查看更多