Как правильно удалить bootstrap CDN из `assets.precompile` и изолировать таблицы стилей контроллера

#css #ruby-on-rails #twitter-bootstrap #asset-pipeline

#css #ruby-on-rails #twitter-bootstrap #ресурс-конвейер

Вопрос:

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

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

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

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

Sass::SyntaxError в RecipeCategories#index

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

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

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

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

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

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

Комментарии:

1. Я немного смущен, поэтому извините за вопрос. Я думал, что вы должны импортировать, только если scss находится в конвейере активов через gem. Вы сказали, что используете CDN, так что разве это не захватывается после предварительной компиляции?

2. Я тоже использую драгоценные камни начальной загрузки bootstrap-sass и bootstrap-will_paginate . Разве я не должен использовать драгоценные камни, когда я использую CDN?

3. Можете ли вы добавить свой код для реализации bootstrap CDN?

4. И чтобы ответить на ваш вопрос, я не специалист по интерфейсу, но обычно вы либо устанавливаете gem, либо получаете ресурс из CDN, но не оба.

5. @RudyOnRails Вау. Это, по сути, ответило на мой вопрос, я не знал об этом, и это привело меня к очистке моего jquery и других драгоценных камней начальной загрузки, поскольку я также использую CDN для jquery. Спасибо! Также оказывается, что мне даже не нужно использовать my Proc , чтобы «решить это» сейчас. — Мне просто пришлось удалить @import для начальной загрузки и //= require для jquery и вернуться к моему первому коду предварительной компиляции.

Ответ №1:

Похоже, вы ошибочно предварительно компилируете ресурсы начальной загрузки через конвейер ресурсов gem и Rails И получаете bootstrap из CDN. Вам нужно только одно или другое, поэтому вы, вероятно, можете удалить gem и просто использовать CDN.