1

我从 sass-bootswatch.theblacksmithhq.com 下载了 SpaceLab 主题,并下载了它的部分文件

// FORMS
// -----------------------------------------------------

.control-group.warning {
    @include formFieldState(#E29235, #E29235, $warningBackground);
}

.control-group.error {
    @include formFieldState(#C00, #C00, $errorBackground);
}

.control-group.success {
    @include formFieldState(#2BA949, #2BA949, $successBackground);
}

// DROPDOWNS
// -----------------------------------------------------

当我运行rake assets:precompile或只是建立一个 Rails 服务器时,我收到此错误Undefined mixin 'formFieldState'. 这是在我添加活动管理员之后开始的。顺便说一下,我的 application.css 文件看起来像这样。

 *= require_self
 *= require variables
 *= require base
 *= require devise
 *= require nav
 */

我可以从变量文件中删除该部分,它会运行,但我的样式看起来非常糟糕,几乎就像引导程序没有运行一样。

我的Gemfile样子是这样的:

gem 'rails', '3.2.13'

gem 'devise'
gem 'omniauth-google-oauth2'

gem 'decent_exposure'
gem 'turbolinks'
gem 'simple_form'

gem 'activeadmin'
gem "meta_search", '>= 1.1.0.pre'

gem 'jquery-rails'

#TODO  needed for the server
gem 'mysql'

group :production do
  # needed for heroku
  #gem 'pg'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
  gem 'sass-rails'
  gem 'bootstrap-sass'

  #TODO  needed for the server
  #gem 'execjs'
  #gem 'therubyracer'
end

group :development, :test do
  gem 'certified'
  gem 'better_errors'
  gem 'factory_girl_rails'
  gem 'pry-rails'
  gem 'pry-stack_explorer'
  gem 'pry-debugger'
  gem 'awesome_print'
  gem 'quiet_assets'
  gem 'rspec-rails'
  gem 'heroku'
end

group :test do
  gem 'sqlite3'
end

如果还有什么可以帮助您理解的,请告诉我。

4

1 回答 1

1

我有两种解释——我认为它们都适用于你:

  • 您尚未在 Gemfile 中指定“bootstrap-sass”gem 的版本。您的 SpaceLab 主题似乎基于 Bootstrap 2,而“bootstrap-sass”gem 的当前版本是 3.0.2.1,它附带 Bootstrap 3.0.2,它与 SpaceLab 不兼容(并且 mixin 不再存在) . 也许您在安装 Active Admin 时“不小心”升级了 bootstrap-sass。

  • 另一个问题是在使用 Asset Pipeline (Sprockets) 时访问 SASS 变量和 mixin,如此处所述。如果您//=require用于导入样式表(例如,用于从 application.css 中的单独文件导入 Bootstrap 和主题),则无法访问文件之间的 SASS 变量和 mixin,因为 Sprockets 单独编译每个文件。您唯一的选择是@import在一个 SASS 文件中一个接一个地通过 Sass 导入 Bootstrap 和您的主题,以确保它们能够访问彼此的变量和 mixin,例如(仅作为示例):

    @import "spacelab-variables";
    @import "bootstrap";
    @import "spacelab-theme";
    
于 2013-11-22T17:43:36.283 回答