условная загрузка таблицы стилей - PullRequest
7 голосов
/ 27 марта 2012

У меня есть сайт с клиентами. Каждый клиент может иметь свою собственную тему, и когда пользователь определенного клиента входит в систему, тема компании должна быть загружена. В application.css.scss у меня есть такая строка для каждой компании:

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

Как я могу загрузить только, например, theme_x, когда пользователь компании x вошел в систему и не загружает theme_y и theme_z? Или есть лучший способ сделать это? Спасибо!

Ответы [ 2 ]

8 голосов
/ 27 марта 2012

Если темы большие, вы можете отделить их от application.css и условно загрузить их в свой макет.Например, если у вас есть помощник theme_stylesheet в application_helper, который возвращает имя темы, которую использует клиент:

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

Если они маленькие, мне нравится пространство имен.Оставьте свой application.css как есть, но измените темы, чтобы использовать правило верхнего уровня для тела.Поместите тег на тело, чтобы выбрать тему.Прелесть этого в том, что вы можете динамически менять тему.

<body class="theme-<%= theme_stylesheet %>">
  ...
</body>

_theme_x.css.scss

body.theme-x {
  ...
}
3 голосов
/ 27 марта 2012

вы можете сделать это таким образом, как вы можете сначала проверить, чей клиент является логином, и применить для него некоторую компоновку

и включить в нее различные 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

надеюсь, вы могли бы получить идею .....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...