60

很难弄清楚如何将 SASS 而不是 SCSS 作为样式表的默认设置。

我试过sass_config.rb用这个制作一个文件:

Sass::Plugin.options[:syntax] = :sass
Sass::Plugin.options[:style] = :compressed

我也尝试将其添加到 environment.rb 文件中。无论哪种方式,我都会收到此错误:

.../config/environment.rb:7:in `<top (required)>': 
  uninitialized constant Sass::Plugin (NameError)
4

6 回答 6

74

对于 rails 3.1.rc4,您可以设置配置:

config.sass.preferred_syntax = :sass

application.rb文件中

于 2011-06-11T15:29:56.653 回答
8

我将以下内容添加到config/environments/development.rb

config.sass.preferred_syntax = :sass

那成功了。

于 2012-09-10T01:56:16.510 回答
7

打电话require 'sass/plugin'后确保它位于底部Application.initialize!

于 2011-05-15T05:51:30.403 回答
2

正如@krainboltgreene 评论的那样,将以下行添加到config/application.rb

config.generators.stylesheet_engine = :sass

sass样式表生成器设置默认格式。但是,由于 Rails 3.1.beta1 不支持它,因此会收到以下错误消息

$ rails g scaffold user name:string
...
Could not find "scaffold.css.sass" in any of your source paths. Your current source paths are:
.../gems/railties-3.1.0.beta1/lib/rails/generators/rails/scaffold/templates
...

$ rails g controller users
...
Could not find "stylesheet.css.sass" in any of your source paths. Your current source paths are: 
.../gems/railties-3.1.0.beta1/lib/rails/generators/rails/assets/templates

如您所见,如果不破坏生成器,就无法更改默认格式。相反,您可以手动创建额外的 *.css.sass 文件,无论是否使用 scss 文件都可以正常工作。

于 2011-05-21T22:47:02.447 回答
2

我也绝对更喜欢 sass 到 scss - 您是否考虑过仅将compass gem用于所有 CSS,并添加preferred_syntax = :sass到 config/compass.rb

我还没有在 rails 3.1 上测试过这个,但它在 3.0.7 中有效

编辑

作为故障排除步骤,当您从 sass_config.rb 中仅删除第一行代码以使其只有第二行时会发生什么?这两条线都会导致错误吗?

于 2011-05-15T04:09:16.950 回答
1

我在其他地方找到了这个答案,不记得了,但把它放在config/initializers/sass.rb

Sass::Engine::DEFAULT_OPTIONS[:load_paths].tap do |load_paths|
  load_paths << "#{Rails.root}/app/assets/stylesheets"
  load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets"
end

我也更喜欢 SASS 语法(相对于 SCSS)。您所要做的就是命名文件mystylesheet.css.sass,它就可以工作。你甚至可以将你的重命名application.cssapplication.css.sass,将顶部的注释更改为,//而不是/* */使用require_*指令——一切正常,然后你可以在你的应用程序全局样式表中使用 SASS。如果您在app/stylesheets.

不需要Sass::Plugin,它完全独立于基于 Sprockets 的新 Rails 资产引擎。它已经知道如何为您编译 SASS 并正确管理资产捆绑。

我想一个新的 Compass 版本将使用资产管道自动为 Rails 3.1+ 项目执行此操作。

于 2011-06-07T01:06:36.767 回答