Условная Live Компиляция CSS в RAILS 3.1
Я работаю над приложением Rails 3.1 и мне нужно решение для динамической компиляции CSS. В моем приложении я позволяю пользователям устанавливать цвета и хотел бы условно использовать "живую компиляцию" для одного файла SCSS, который контролирует все цвета, все остальные мои файлы SCSS все еще необходимо предварительно скомпилировать. После некоторого поиска я в тупик о том, как действовать. Любые предложения будут полезны.
Спасибо заранее за все ваши идеи.
Девин
PS - я должен также упомянуть, что мне нужно использовать переменную экземпляра в SCSS также.
1 ответ
Вы можете предварительно обработать файл 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;
}
Адаптируйте по мере необходимости.