Asset Pipeline: исключая файл admin.css
Я обновил приложение Rails 3.0 до Rails 3.1, которое включало в себя этот
/*
*= require_self
*= require_tree .
*/
в файле application.css. Однако есть файл admin.css, который теперь переопределяет основной файл css приложения.
Есть ли способ исключить из файла admin.css? В разделе администрирования сайта я вручную включаю файл admin.css, но мне нужен способ исключить его из пользовательского интерфейса.
Ответы
Ответ 1
Ранее был задан аналогичный вопрос, и вы должны проверить его на.
Sprockets использует файлы манифеста, чтобы определить, какие активы включать и обслуживать. Эти файлы манифеста содержат директивы - инструкции, которые сообщают Sprockets, какие файлы требуются для создания одного файла CSS или JavaScript. С помощью этих директив Sprockets загружает указанные файлы, обрабатывает их, если необходимо, объединяет их в один файл и затем сжимает их (если Rails.application.config.assets.compress является истинным). При обслуживании одного файла, а не многих, время загрузки страниц может быть значительно уменьшено, потому что браузер делает меньше запросов.
У вас может быть столько файлов манифеста, сколько вам нужно. Например, манифест admin.css и admin.js может содержать файлы JS и CSS, которые используются для раздела администрирования приложения.
В частности, вы можете указать отдельные файлы и скомпилировать их в указанном порядке.
Пример и более подробная информация содержится в этом руководстве.
Таким образом, ваш новый application.css станет следующим:
/*
*= require styles
*= require layout
*/
/* Other styles */
Ответ 2
Вы можете использовать директиву stub
звездочек в вашем манифесте следующим образом:
/*
*= require_self
*= require_tree .
*= stub admin
*/
Это исключает admin.css
, а также ВСЕ css, необходимые в нем!
Итак, если ваш манифест admin.css
выглядит так:
/*
*= require bootstrap
*= require_self
*/
bootstrap.css
также исключается, и require
не может это зафиксировать! Позаботьтесь об этом;)
Ответ 3
Другим решением является наличие двух каталогов в app/assets/stylesheets
, например, каталога public
и каталога admin
.
Затем в app/assets/stylesheets/application.css
вы можете изменить require_tree .
на require_tree ./public
.
Возможно, вам придется сделать что-то подобное на стороне администратора. Я использую Administrate gem, который знает, где найти свои собственные активы.
Ответ 4
soluction добавляется в config/assets.rb
#config/assets.rb
Rails.application.config.assets.precompile += %w(*.svg *.eot *.woff *.ttf *.gif *.png *.ico *.swf *.xap masonry.pkgd.min.js jquery.colorbox-min.js i18n/jquery.colorbox-pt-BR.js admin.css)
И добавьте в приложение /views/layouts/ _adm_layout.html.erb
#app/views/layouts/_adm_layout.html.erb
<%= stylesheet_link_tag 'admin', media: 'all', 'data-turbolinks-track' => true %>