我试图通过编译我的资产并通过<%= stylesheet_link_tag "application", params[:controller] %>
在我的布局中渲染它们来将我的 CSS 隔离到特定的控制器
我正在使用引导 (4.3.1) CDN,并且在我的应用程序.scss 文件中有这个:
@import "bootstrap-sprockets";
@import "bootstrap";
问题是当我Rails.application.config.assets.precompile += %w( *.css )
时它必须编译引导程序,因为它给了我这个错误:
Sass::SyntaxError in RecipeCategories#index
未定义的变量:"$alert填充"。
所以我用它来"解决"它:
Rails.application.config.assets.precompile = [ Proc.new{ |path| !File.extname(path).in?('.css') }, /bootstrap.css$/ ]
我不知道这是防止预编译引导程序的有效还是最佳实践。
我还遇到了一个问题,即在一个控制器的样式表中定义的样式正在另一个控制器的视图中加载,直到刷新页面。(我将类放在多个控制器视图中的元素上,以查看它是否真的与特定控制器隔离。
基本上,一个控制器的 CSS 文件中的样式可以在其他控制器视图中使用,直到刷新页面,然后从控制器视图中的元素中"删除"该样式,该元素中没有该样式的 CSS 文件中。
您似乎错误地通过 gem 和 Rails 的资产管道预编译引导程序资产,并从CDN 获取引导程序。您只需要一个或另一个,因此您可能可以删除 gem 并仅使用 CDN。