Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails @extensing bootstrap时找不到选择器_Ruby On Rails_Twitter Bootstrap_Sass_Bootstrap Sass - Fatal编程技术网

Ruby on rails @extensing bootstrap时找不到选择器

Ruby on rails @extensing bootstrap时找不到选择器,ruby-on-rails,twitter-bootstrap,sass,bootstrap-sass,Ruby On Rails,Twitter Bootstrap,Sass,Bootstrap Sass,我正在开始我的第一个rails项目。在这个项目中,我将使用引导和SASS。我希望避免(在大多数情况下)将样式相关的类放入HTML中,如本文所述: 我已使用Bower将引导式sass包括在我的项目中,并遵循以下说明: 现在bootstrap本身正在工作,因为我可以在我的HTML中使用它的类,并且一切都呈现得很好。但是如果我尝试使用引导类扩展我的一个类,例如: .myClass @扩展。文本静音 然后我得到以下错误: “.myClass”未能@extend.text静音”。 找不到选择器“.t

我正在开始我的第一个rails项目。在这个项目中,我将使用引导和SASS。我希望避免(在大多数情况下)将样式相关的类放入HTML中,如本文所述:

我已使用Bower将引导式sass包括在我的项目中,并遵循以下说明:

现在bootstrap本身正在工作,因为我可以在我的HTML中使用它的类,并且一切都呈现得很好。但是如果我尝试使用引导类扩展我的一个类,例如:

.myClass
@扩展。文本静音
然后我得到以下错误:

“.myClass”未能@extend.text静音”。
找不到选择器“.text muted”。
如果扩展失败,请使用“@extend.text muted!optional”。
我想这可能与我的Sass文件在引导前加载有关,但我不知道该怎么办

下面是我的
application.css.sass
文件的内容,其中一些内容是
*=require
d,另一些内容是
@import
ed(我不确定是否应该这样做)

/*
*=需要组件
*需要自己
*=需要一棵树。
*/
$icon字体路径:“引导sass/assets/fonts/bootstrap/”
@导入“引导sass/资产/样式表/引导链轮”
@导入“引导sass/资产/样式表/引导”

如何解决此问题?

引导Sass文档建议从
应用程序中删除requires。Sass
,因为您“将无法访问引导混合或变量。”

你应该删除

*= require_tree .
并确保导入所有相关文件(您似乎已经这样做了)

require\u tree
将自动包括
app/assets/stylesheet/
文件夹下的所有样式表,并且肯定会引起一些重复,甚至错误的加载顺序。而是通过按所需顺序“手动”导入文件来获得控制权

现在
@extend
可以在
应用程序.sass
内部,也可以在引导文件之后导入
的另一部分,您应该可以开始了。

Rails 5和Rails 6对
未能@extend
未定义变量
SassC::SyntaxError
TL;DR:Rails 5和6使用一个
app/assets/config/manifest.js
文件,默认情况下,该文件处理根文件夹
app/assets/stylesheets
中的所有
.scss
文件,而Rails 4只针对在
application.scss
中导入的文件。要修复Rails 5和6中的这些错误,请执行以下操作之一:

  • 将SCSS文件从
    样式表
    目录移动到样式表的子目录,因为默认情况下不会处理子目录中的
    .SCSS
    文件
  • manifest.js
    文件修改为仅处理条目文件,如application.scss
  • 扩展解释 要重现此错误,请在终端中运行:
    bin/rails assets:precompile
    。您将收到一条错误消息,例如:

    SassC::SyntaxError: Error: ".badge-title" failed to @extend ".text-center".
           The selector ".text-center" was not found.
           Use "@extend .text-center !optional" if the extend should be able to fail.
            on line 47:11 of app/assets/stylesheets/badges.scss
    
    我的
    应用程序.scss

    @import "bootstrap-sprockets";
    @import "badges";
    // All bootstrap overrides go above
    @import "bootstrap";
    
    注意:badges.scss希望CSS
    .text center
    在上面的第一个@import语句中定义,但是Sprocket 5+正在处理样式表目录中的所有文件,即使文件名有一个前导下划线

    要修复:

  • 我将
    样式表/徽章.scss
    移动到
    样式表/组件/徽章.scss
  • 将my application.scss文件中的第2行修改为,
    @import”components/badges.scss

  • 希望这对某人有所帮助!

    可能重复:@cimmanon抱歉,我是Sass新手,我不明白我的问题与另一个问题有什么关系。我应该只编译一个
    .Sass
    文件,并将其他文件作为部分包含在内吗?尝试一下,看看这是否解决了您的问题。@cimmanon不,没有。此外
    application.css.Sass
    我只有一个样式表文件,
    schedule.sass
    。我尝试将其重命名为
    \u schedule.sass
    ,但问题仍然存在。请检查此项