2013-11-13 1 views
1

Умные умы, чем у меня:Rails 3.2 _partial.scss.erb переменная область охвата: полная компиляция до @import?

У нас есть несколько партитур SCSS, которые определяют миксины, переменные и другие полезные свойства. Мы теперь нужно использовать некоторый встроенный рубин в одном из этих обертонов, например, так:

_partial.scss.erb

$text-color: #555555; 
<%= "" %> 

app.scss

@import "partial" 
.text {color: $text-color;} 

Если файл называется _partial.scss, он отлично работает (без рубина, конечно). При имени .erb Я получаю сообщение об ошибке, что переменная $text-color не определена.

Я использую драгоценный камень sass_rails_patch. Я не могу сказать точно, но я считаю, что _partial.scss.erb полностью скомпилирован в _partial.css и , затем импортируется в app.scss. Возможно, поэтому $text-color получает изъятие.

Любые советы о том, как получить этот поток, работающий так, как я ожидаю? Я бы ожидать:

  1. Оценка рубин в .erb файлов, генерировать правильный .scss.
  2. Run @import заявления о .scss
  3. ли все другие SCSS компиляции вещи, генерировать .css.
+0

Не уверено, но, возможно, это поможет вам: ХТ tp: //guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives. Здесь вы можете указать порядок компиляции. –

ответ

0

Скорее всего, вы захотите использовать скрипт Ruby в своих файлах SCSS для создания путей к ресурсам (и это ДОЛЖНО быть единственной причиной). Если это является причиной того, вы можете использовать функции SCSS строить их:

Вместо:

background-image: url(<%= asset_path('general/side_shadow.png') %>); 

Используйте этот CSS функция/SCSS вместо:

background-image: url(asset-path("general/side_shadow.png", image)); 

Вот документ для SCSS помощники: http://rubydoc.info/github/petebrowne/sprockets-sass/master/Sprockets/Sass/Functions

Надеется, что это помогает

+2

Собственно, это не единственная причина, нет. Мы хотим сделать некоторые довольно сложные динамические определения класса CSS, чтобы мы могли быть как можно сухими ... –

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