ruby-on-rails - 样式表的条件加载

标签 ruby-on-rails ruby-on-rails-3

我有一个有客户的网站。每个客户端都可以有自己的主题,当某个客户端的用户登录时,必须加载公司主题。在 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 {
  ...
}

关于ruby-on-rails - 样式表的条件加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9891327/

相关文章:

ruby-on-rails-3 - Rails 3 - 用于存储和跟踪更改的 gem

ruby - 如何在 PostgreSQL 中使用 "LIKE"查询 jsonb 列类型?

ruby-on-rails - 使用 RSpec、Devise、Factory Girl 测试 Controller

ruby-on-rails - Rails 教程 : undefined local variable or method `static_pages_index_path' 中的 rspec 错误

mysql - 使用 Ruby 将 MySQL 转储导入到 Postgres 数据库

ruby-on-rails - 在 map reduce 之前对 mongoid 集合进行排序

ruby-on-rails - rails : Follow/Following Relationship Button

ruby-on-rails - 有没有一种方法可以在 Heroku 上运行预定作业而无需分拆新的测功机?

ruby-on-rails - Controller 中的 Rails : Use reload!

ruby-on-rails - rails : Use URL Helper in Observer