我试图通过编译我的 Assets 并通过 <%= stylesheet_link_tag "application", params[:controller] %>
在我的布局中呈现它们来将我的 CSS 隔离到特定的 Controller 。
我正在使用 Bootstrap (4.3.1) CDN 并将其包含在我的 application.scss 文件中:
@import "bootstrap-sprockets";
@import "bootstrap";
问题是当我做 Rails.application.config.assets.precompile += %w( *.css )
它一定是在编译 Bootstrap ,因为它给了我这个错误:
Sass::SyntaxError in RecipeCategories#index
Undefined variable: "$alert-padding".
所以我用它来“解决”它:
Rails.application.config.assets.precompile = [ Proc.new{ |path| !File.extname(path).in?('.css') }, /bootstrap.css$/ ]
我不知道这是否是防止预编译 Bootstrap 的有效或最佳实践。
我还遇到了一个问题,即在一个 Controller 的样式表中定义的样式被加载到另一个 Controller 的 View 中,直到页面被刷新。 (我将类放在多个 Controller View 中的一个元素上,以查看它是否真的与特定 Controller 隔离。)
基本上,在刷新页面之前,一个 Controller 的 CSS 文件中的样式可以在其他 Controller View 中使用,然后从 Controller View 中没有该样式的元素中“删除”该样式CSS 文件。
最佳答案
您似乎错误地通过 gem 和 Rails 的 Assets 管道预编译了 Bootstrap Assets 并且从 CDN 获取 Bootstrap 。您只需要一个或另一个,因此您可以删除 gem 并只使用 CDN。
关于css - 如何从 `assets.precompile` 中正确删除 Bootstrap CDN 并隔离 Controller 样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55526001/