#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 определенно заставило меня задуматься.