Как правильно удалить загрузочную CDN из `assets.precompile` и изолировать таблицы стилей контроллера - PullRequest
0 голосов
/ 05 апреля 2019

Я пытался разделить свой CSS на определенные контроллеры, скомпилировав свои активы и отобразив их в своих макетах через <%= stylesheet_link_tag "application", params[:controller] %>

Я использую CDN Bootstrap (4.3.1) и у меня это есть в моем приложенииФайл .scss:

@import "bootstrap-sprockets";
@import "bootstrap";

Проблема заключается в том, что когда я делаю Rails.application.config.assets.precompile += %w( *.css ), он должен компилировать загрузчик, поскольку это дает мне эту ошибку:

Sass :: SyntaxError в RecipeCategories# index

Неопределенная переменная: "$ alert-padding".

Так что я использую это, чтобы "решить" это:

Rails.application.config.assets.precompile = [ Proc.new{ |path| !File.extname(path).in?('.css') }, /bootstrap.css$/ ]

Я не знаю, является ли это эффективным или наилучшим способом предотвращения предварительной компиляции начальной загрузки.

Я также столкнулся с проблемой, когда стиль, определенный в таблице стилей одного контроллера:загружается в виде другого, пока страница не обновится.(Я поместил класс в элемент в нескольких представлениях контроллеров, чтобы увидеть, действительно ли он был изолирован для определенного контроллера.)

По сути, стиль в файле CSS одного контроллера может использоваться в представлениях других контроллеров, покастраница обновляется, затем стиль «удаляется» из элемента в представлении контроллера, который не имеет стиля в своем файле CSS.

1 Ответ

0 голосов
/ 05 апреля 2019

Вы, похоже, по ошибке прекомпилируете ресурсы начальной загрузки через гем и конвейер ресурсов Rails AND , получая загрузочную версию из CDN.Вам нужен только один или другой, так что вы можете удалить драгоценный камень и просто использовать CDN.

...