Я нашел способ сделать его менее жестким и надежным в будущем, все еще используя конвейер ресурсов, но сгруппировав таблицы стилей. Это не намного проще, чем ваше решение, но это решение позволяет автоматически добавлять новые таблицы стилей без повторного редактирования всей структуры.
То, что вы хотите сделать, это использовать отдельные файлы манифеста, чтобы разбить вещи. Сначала вам нужно реорганизовать папку app/assets/stylesheets
:
app/assets/stylesheets
+-- all
+-- your_base_stylesheet.css
+-- print
+-- blueprint
+-- print.css
+-- your_print_stylesheet.css
+-- ie
+-- blueprint
+ ie.css
+-- your_ie_hacks.css
+-- application-all.css
+-- application-print.css
+-- application-ie.css
Затем вы редактируете три файла манифеста:
/**
* application-all.css
*
*= require_self
*= require_tree ./all
*/
/**
* application-print.css
*
*= require_self
*= require_tree ./print
*/
/**
* application-ie.css
*
*= require_self
*= require_tree ./ie
*/
Затем вы обновите файл макета приложения:
<%= stylesheet_link_tag "application-all", :media => "all" %>
<%= stylesheet_link_tag "application-print", :media => "print" %>
<!--[if lte IE 8]>
<%= stylesheet_link_tag "application-ie", :media => "all" %>
<![endif]-->
Наконец, не забудьте включить эти новые файлы манифеста в ваш config / environment / production.rb:
config.assets.precompile += %w( application-all.css application-print.css application-ie.css )
Обновление:
Как отметил Макс, если вы следуете этой структуре, вы должны помнить о ссылках на изображения. У вас есть несколько вариантов:
- Перемещение изображений в соответствии с тем же шаблоном
- Обратите внимание, что это работает, только если изображения не являются общими для всех
- Я ожидаю, что это будет не стартер для большинства, поскольку это слишком усложняет
- Укажите путь к изображению:
background: url('/assets/image.png');
- Используйте помощника SASS:
background: image-url('image.png');