импорт CSS-файла из SCSS / Rails 3.2 с sass-rails - PullRequest
2 голосов
/ 13 февраля 2012

У меня есть файл CSS в vendor / assets / stylesheets, и я бы хотел сослаться на него в моем файле application.css.scss (или около того). Я надеялся, что это просто отобразит @import плюс путь к активу:

@import asset-path('lionbars.css', stylesheet)

Но нет такой удачи: я получаю

Invalid CSS after "@import ": expected uri, was "asset-path('lio..."

Либо у меня неправильный синтаксис, либо потому, что @import не принимает динамические строки , но я не уверен.

Итак, я вижу несколько вариантов. Я могу либо:

  1. Определите подходящий синтаксис, если это просто проблема с синтаксисом.
  2. Переименуйте мой файл в application.css.scss.erb и замените другие существующие ссылки на пути к ресурсам на <%= asset_path('random/asset.png') %>. Это делает мою подсветку синтаксиса очень запутанной и, вероятно, не настолько эффективной. В противном случае это работает.
  3. Переименуйте мой css-файл в _lionbars.css.scss и позвоните @import "lionbars". Две причины, по которым я не хочу этого делать, это: # 1 вообще говоря, я не хочу трогать продаваемый код, и # 2 там есть некоторые специфичные для IE8 вещи (<!--[if IE 8]>blahblah<![endif]-->), которые не могут быть помещены в файл scss и я не хочу разбивать файл (и мне все равно придется искать решение для кода IE8 и как его включить).

Итак, я надеюсь, что ответ № 1, но я не уверен. Есть идеи?

Ответы [ 3 ]

1 голос
/ 18 октября 2013

Правильное решение: @import 'lionbars'. Sass-rails настраивает директиву @import для автоматического использования конвейера ресурсов.

1 голос
/ 14 февраля 2012

sass-rails содержит вспомогательные средства типа asset-path.В противном случае Sass и Compass не имеют понятия asset-path.

В качестве альтернативы, вы можете использовать add_import_path в вашем config.rb. См. Справочник по конфигурации компаса

0 голосов
/ 24 марта 2012

Веб-сайт sass-rails довольно понятен:

Sprockets предоставляет некоторые директивы, которые размещаются внутри комментариев, называемых require, require_tree и require_self. НЕ ИСПОЛЬЗУЙТЕ ИХ В ВАШИХ SASS / SCSS-ФАЙЛАХ .

... но я пробовал это как в dev, так и в производстве для простых css-файлов, и это работало просто отлично:

/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * ...
 *
 *= require_self
 *= require_tree .
 *= require lionbars
*/

Так что, если у кого-то нет идеи получше, это то, что я собираюсь сделать.Мне пришлось перенести конкретный комментарий для IE8 в мой макет, так как Sprockets вырвался, пытаясь скомпилировать его, но я все же нахожу это проще, чем альтернативы.Если у вас есть лучшее решение, чем это, я был бы рад услышать это!Я не в восторге от использования решения, явно недовольного на странице sass-rails.

...