#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.