Ответ 1
Я обнаружил способ сделать это менее жестким и будущим доказательством, все еще используя конвейер активов, но имея таблицы стилей, сгруппированные. Это не намного проще, чем ваше решение, но это решение позволяет вам автоматически добавлять новые таблицы стилей без повторной настройки всей структуры.
То, что вы хотите сделать, это использовать отдельные файлы манифеста, чтобы разбить их. Сначала вам нужно переустановить папку 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 )
Update:
Как указал Макс, если следовать этой структуре, вы должны помнить о ссылках на изображения. У вас есть несколько вариантов:
- Переместите изображения, следуя одному шаблону
- Обратите внимание, что это работает только в том случае, если изображения не являются общедоступными
- Я ожидаю, что это будет не стартером для большинства, поскольку это слишком усложняет ситуацию.
- Квалифицировать путь изображения:
-
background: url('/assets/image.png');
-
- Использовать помощник SASS:
-
background: image-url('image.png');
-