Можно ли перекомпилировать ресурсы с контроллера в Rails? - PullRequest
0 голосов
/ 26 марта 2019

Я добавляю в свое приложение функциональность, которая позволяет администратору изменять основной цвет темы начальной загрузки для всех пользователей. Проблема в том, что как только администратор меняет свой цвет (который я храню в Rails.configuration), ресурсы не перекомпилируются, что означает, что цвет не меняется.

Есть ли способ перекомпилировать ресурсы с контроллера?

В моем _variables.scss.erb

$primary: <%= Rails.configuration.color %>;
$theme-colors:("primary":$primary);

В моем контроллере

Rails.configuration.color = params[:color]
redirect_to root_path

Я уже пытался сохранить значение цвета в базе данных и прочитать значение в Rails.configuration.color при запуске приложения (в инициализаторе), но снова ресурсы не перекомпилируются

1 Ответ

1 голос
/ 27 марта 2019

Я не рекомендую менять цвет пользовательского интерфейса с помощью глобальной цветовой переменной Ruby.Основная причина: вы не можете перекомпилировать свои активы, так как каждый пользователь будет торговать цветом темы.Мое предложение: Реализуйте, сколько классов, которые переназначают значение $theme-colors, как вам нужно, например, следующее:

# _variables.scss
$theme-colors: black; # default color

.blue-theme {
  $theme-colors: blue;
}

.yellow-theme {
  $theme-colors: yellow;
}

Наконец, в вашем application.html.erb (или эквивалентном) вы меняете class-name в соответствии спо предпочтению пользователя:

# apllication.html or equivalent
<body class="<%= @class_name %>">
</body>

Obs : если вы используете Rails.configuration, действие одного пользователя торгует темой пользовательского интерфейса, торгуя темой для всех пользователей, вместо использования Rails.config поместите эту опцию в session, укажите current_user и сохраните это предпочтение или сохраните эту информацию в вашей базе данных.

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