Подтвердить что ты не робот

Asset Pipeline: исключая файл admin.css

Я обновил приложение Rails 3.0 до Rails 3.1, которое включало в себя этот

/*
*= require_self
*= require_tree .
*/

в файле application.css. Однако есть файл admin.css, который теперь переопределяет основной файл css приложения.

Есть ли способ исключить из файла admin.css? В разделе администрирования сайта я вручную включаю файл admin.css, но мне нужен способ исключить его из пользовательского интерфейса.

4b9b3361

Ответ 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 %>