Динамический (S) CSS в рельсах 3.1 - PullRequest
0 голосов
/ 12 октября 2011

Я пытаюсь разрешить пользователю настраивать мое приложение, используя файлы YML.
Когда пользователь обновляет определенные вещи, CSS также должен быть обновлен.

Я бы хотел решить эту проблему, используя вместо этого динамический CSS. Я планировал сделать это, чтобы получить файл настроек SCSS, который импортируются и используются другими файлами CSS.

Вот что у меня есть:

settings.scss.erb:

$width: <%= Rails.application.config.width %>px;

main.css.scss:

//= require settings

@import "settings";

#main {
  width: $width;
}

Но я получаю эту ошибку:

Invalid CSS after "$width: ": expected expression (e.g. 1px, bold), was "<%= Rails.appli..."`

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

Я бы предпочел не помещать все в .erb файлы, поскольку мой текстовый редактор не поддерживает (подсветку синтаксиса и команды) при наличии scss в файлах erb

1 Ответ

1 голос
/ 12 октября 2011

Если устранить проблему, когда ERB не анализируется, вы не сможете динамически настраивать CSS (я думаю, что для основного файла может потребоваться расширение erb).Конвейер ресурсов предназначен для обслуживания ресурсов таким способом, который сообщает браузерам, что они статичны и не собираются изменяться.

Если предположить, что синтаксический анализ erb работал, ширина будет отображаться на этапе прекомпиляции илипервый запрос.Если вы используете Sprockets, то заголовки дальнего будущего настроены так, чтобы удаленные клиенты могли кэшировать содержимое в течение 1 года.И Sprockets воспринимает изменения только при изменении временной метки файла, поэтому никогда не получит никаких новых значений.

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

...