Rails 3.1 конвейер активов с SASS

#ruby-on-rails #ruby-on-rails-3.1 #sass #asset-pipeline

#ruby-on-rails #ruby-on-rails-3.1 #sass #конвейер активов

Вопрос:

Я читал этот пост о конвейере активов Rails 3.1, и автор указывает на то, что сделало меня несколько недовольным переходом к этой новой парадигме.

Поскольку ресурсы компилируются, и на этом этапе их имена изменяются, чтобы включить хэш md5 содержимого, вы больше не можете напрямую ссылаться на эти ресурсы в своих CSS-файлах. Возьмите это изображение, например, rails.png. Он переименован:

 rails-9c0a079bdd7701d7e729bd956823d153.png
 

Я предпочитаю использовать SASS для своего CSS и специально помещаю имена изображений в переменные, чтобы мои стили CSS можно было быстро изменять, изменяя эти переменные. Разве это не будет нарушено сейчас, потому что имена заменены? Не испортит ли это и более классические фоны изображений CSS?

Если это действительно проблема, как мы можем ее обойти? Я бы предпочел продолжать использовать SASS. Это упрощает управление обширными файлами CSS.

Ответ №1:

В таблицах стилей sass вам нужно будет использовать image_path или image_url helper, предоставленный sass-rails для генерации допустимых путей к изображениям. Другой способ — встроить erb в таблицу стилей, но мне это кажется слишком запутанным.

Комментарии:

1. Абсолютно идеально. Хотя я чувствую себя несколько глупо, не глядя на документацию sass-rails. Я остановился на sass-lang.com документация. Большое вам спасибо за это…

Ответ №2:

Добавьте .erb в конец имени файла. И используйте его

 .class { background-image: url(<%= asset_path 'image.png' %>) }
 

Вы можете прочитать об этом здесь .

Комментарии:

1. Единственная проблема заключается в том, что файлы SASS должны быть скомпилированы, поэтому помещение их в .erb на самом деле не решает проблему. Спасибо за suggestion…it определенно заставило меня задуматься.