Вы можете предварительно обработать файл Sass с помощью ERb. Это позволит вам использовать переменные экземпляра, установленные в контроллере или представлении в файле .scss
. Сам файл может рассматриваться как обычный вид, отображаемый контроллером как часть действия.
Этот код не проверен, но он должен дать вам место для начала. Предполагается, что вы сохраняете настройки цвета пользователя как часть самой модели User
.
Сначала определите ваше пользовательское действие на UsersController
:
# config/routes.rb
match '/users/:id/styles' => 'users#styles', :as => :user_styles
Ссылка на "таблицу стилей" в вашем макете:
# app/views/layouts/application.html.erb
= stylesheet_link_tag 'application', user_styles_path(current_user, :format => 'css')
Определите действие в вашем контроллере. Вы можете сделать все, что захотите, чтобы получить настройки пользователя здесь:
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def styles
@colors = User.find(params[:id]).colors
end
end
Это действие автоматически отобразит это представление:
# app/views/users/styles.css.scss.erb
$background-color: <%= @colors[:background] %>;
body {
background-color: $background-color;
}
При необходимости адаптироваться.