完全相同的单行SASS代码适用于一个rails项目,但不适用于另一个

时间:2014-01-13 01:48:00

标签: css ruby-on-rails twitter-bootstrap ruby-on-rails-4 sass

首先,这是我第一次在StackOverflow上发布问题。我是个粉丝。无论如何:

我正在编写Michael Hartl的Rails教程,在编辑custom.scss.css文件后,我突然遇到了这个错误:

  

SASS语法错误

     

未定义的变量:“$ grey”。     (在/home/shady/workspace/ruby/sample_app/app/assets/stylesheets/custom.css.scss:4)

这不是$ grey的问题;这是拼写和大写灰色SASS变量的正确方法(我检查过,它适用于另一个rails项目)。我简化了custom.scss.css文件来查明这个错误,所以它包含的是:

@import "bootstrap";
  h1 {
   color: $gray;
}

在我的示例应用程序(rails教程应用程序)中,我仍然遇到此错误,但是当我在我创建的另一个rails项目中使用这个完全相同的代码时(为了练习我自己在Rails教程中学到的东西,所以它几乎模仿了Sample App),使用完全相同的gemset和Gemfile,这非常好用。这是我的Gemfile:

source 'https://rubygems.org'
ruby '2.0.0'
#ruby-gemset=SecondTry

gem 'rails', '4.0.2'
gem 'bcrypt-ruby', '~> 3.1.2'

group :development, :test do
  gem 'sqlite3', '1.3.8'
  gem 'rspec-rails', '2.13.1'
  gem 'guard-rspec', '2.5.0'
  gem 'spork-rails', '4.0.0'
  gem 'bootstrap-sass', '2.3.2.0'
end

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
  gem 'libnotify', '0.8.0'
  gem 'factory_girl_rails', '4.2.1'

end

gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '>=4.0.0'
gem 'jquery-rails', '>=3.0.4'
gem 'turbolinks', '2.2.0'
gem 'jbuilder', '1.0.2'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

group :production do
  gem 'pg', '0.15.1'
  gem 'rails_12factor', '0.0.2'
end

上次编辑custom.scss.css时,这工作得非常好,从那以后我没有做过任何实质性的事情。我没有(至少有目的地)编辑我认为会导致这种情况的任何文件。我已经尝试卸载并重新安装bootstrap-sass,但它没有用。我相信这是SASS的问题,但由于我是铁杆新手,我不知道如何解决它。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

FIXED IT HAHAHAHAAAAAAAA

这是因为,由于某些愚蠢的原因,我在/ vendor目录中添加了一个assets文件夹(可能正在测试其他内容),并且看起来rails检查此目录是否有任何外部样式表,如果它发现它存在的话从那里加载而不是gem(?),这就是Rails资产管道甚至没有处理bootstrap的原因。除了样式表和js文件夹外,assets文件夹为空。删除资产文件夹后,应用程序再次开始工作。

答案 1 :(得分:0)

您需要在某处定义$ gray var。在我的rails项目中,我通常设置一个_colors.scss部分,我定义了所有我的var然后我在bootsrap之前导入它们,所以我可以覆盖它们,如果我需要的话。

$grey:#EEEEEE; 

我没有在bootstrap var list(http://getbootstrap.com/customize/#less-variables)中看到任何$ gray var。

另一个想法,我不知道你如何在布局中调用样式表。但也许如果你只调用application.scss,可能会缺少* = require,其中定义了$ grey。