Как я могу получить доступ к объектам Rails в Sass? - PullRequest
5 голосов
/ 16 сентября 2011

В проекте Rails 3.1.0 у меня есть Компании с несколькими настраиваемыми атрибутами, такими как background_color и link_color.Я хочу иметь возможность устанавливать некоторые переменные Sass следующим образом:

$background_color: <%= @company.background_color %>
$link_color: <%= @company.link_color

...

Это не работает, потому что @company равно нулю, когда Sass делает свое дело.Я не уверен, как решить эту проблему динамичным образом (можно создавать компании, менять цвета и обновлять представления немедленно).Есть предложения?

Ответы [ 3 ]

1 голос
/ 16 сентября 2011

Я могу вспомнить пару подходов с макушки головы:

  1. Служите вашей таблице стилей через контроллер.
  2. Используйте CSS-классы для настройки цветов и обслуживайте только этот CSS через контроллер, встроенный фрагмент или CSS @import.

Обслуживание вашей таблицы стилей через контроллер довольно просто, поэтому сказать особо нечего. Это может быть немного уродливо и громоздко.

Для второго вы добавите пару дополнительных классов CSS:

.custom-bg {
    background-color: some-default-bg;
}
.link-fg {
    color: some-default-fg;
}
/*...*/

Тогда для любого элемента, которому нужно использовать пользовательский цвет фона, потребуются свои обычные классы CSS и custom-bg; аналогичные махинации потребуются для других настраиваемых значений. Чтобы предоставить настроенный CSS, вы могли бы встроить элемент <style> в ваш HTML, используя стандартную часть ERB, или вы могли бы обслуживать CSS через контроллер (либо через <style src="...">, либо @import). Таким образом, вы подделаете SASSy совершенство с помощью нескольких классов CSS в своем HTML.

Также есть JavaScript. Вам понадобится какой-то способ определить элементы, для которых необходимо настроить их цвета, а затем настроить их напрямую с помощью таких вещей:

$('.need-custom-background').css('background-color', '...');
0 голосов
/ 19 декабря 2011

Чтобы продолжить, я создал контроллер таблиц стилей, но он был довольно изобретателен, чтобы все пути синтаксического анализа и загрузки конвейера ресурсов работали правильно.Я закончил тем, что сбросил это и реорганизовал стили, чтобы я мог генерировать статическую таблицу стилей для каждой компании, которая обновляется и загружается в S3 при обновлении компании.

0 голосов
/ 16 сентября 2011

Я думаю, что вы могли бы сделать что-то похожее на то, что у вас есть, но вам нужно изменить расширения файлов на .css.scss.erb

...