2014-12-14 2 views
1

Мне нужны динамические стили для каждого пользователя. Проблема такова, что можно выбирать между двумя темами, один статический и другой пользователь может измениться. После изменения текущего значения темы пользователя будет задано значение sass variable и потребуется прекомпиляция. Как я могу это сделать?Динамические стили для разных пользователей

ответ

0

Лучше полагаться на чистые функции CSS в этом, а не компилировать SCSS для каждого запроса (что будет очень неэффективно).

Учитывая этот базовый SCSS файл:

.base-theme { 
    .color-main { 
     color: $blue-lighter; 
    } 
    // and so on 
} 

Вы можете использовать это так:

<p class="color-main"> ... </p> 

В зависимости от настроек, хранящихся в базе данных вы можете создать альтернативный тему, как так:

<style> 
.alt-theme .color-main { 
    color: <%= current_user.colors.main %>; 
} 
</style> 

и применять их позже следующим образом:

<body class="<%= user.has_theme?? 'alt-theme' : 'base-theme' %>">...</body> 
+0

спасибо, но мне нужно только sass –

+0

Но обработка SASS по каждому запросу сделает ваше приложение действительно, очень медленным. Конвейер активов не предназначен для использования таким образом в производственных развертываниях. – lukaszkorecki

+0

Да, но мне нужно написать логику для компиляции стилей sass при создании темы после изменения. –

Смежные вопросы