Условная живая компиляция css в RAILS 3.1 - PullRequest
1 голос
/ 06 марта 2012

Я работаю над приложением Rails 3.1 и мне нужно решение для динамической компиляции CSS.В моем приложении я позволяю пользователям устанавливать цвета и хотел бы условно использовать «живую компиляцию» для одного файла SCSS, который контролирует все цвета, все остальные мои файлы SCSS все еще необходимо предварительно скомпилировать. После некоторого поиска яозадачен тем, как действовать. Любые предложения будут полезны.

Заранее спасибо за все ваши идеи.

Девин

ps - я должен также упомянуть, что мне нужнотакже используйте переменную экземпляра в SCSS.

1 Ответ

1 голос
/ 06 марта 2012

Вы можете предварительно обработать файл 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;
}

При необходимости адаптироваться.

...