您想要的是通过 Rails 资产管道编译此文件:
resources/themes/templates/resources/sass/my-ext-theme.scss
为了让它发挥作用,我艰难地学到了一些东西:
- ExtJS 使用 SASS 编译(Rails 也是如此)和 Compass,其中包括蓝图和指南针 CSS 工具包。Compass 不适用于 Rails,您需要使用不包含 CSS 工具包的 gem“compass-rails”。只有主 compass gem 有这些工具包,它是 compass-rails 的依赖项,所以如果你捆绑 compass-rails,你应该得到它们,它们需要在你的 sass.load_paths 配置中。如果您在没有 compass-rails 的情况下包含“compass”gem,您将遇到奇怪的错误,并在您尝试解决它们时成为 rails 资产管道的专家!
- ExtJS 使用旧版本的 SASS,Rails 使用的新版本不喜欢在模块内部定义函数和 mixin。要解决此问题,请查看它给您的错误(始终是函数或 mixin 定义)并将它们移动到 _functions 或 _mixins 文件。(更多信息:升级到 sass-3.1.8 后出现错误)
以下是启动和运行的方法:
把它放到你的 config/application.rb 中:
# Set up our ExtJS SASS build environment
config.sass.load_paths << "#{Rails.root}/vendor/assets/stylesheets"
config.sass.load_paths << "#{Rails.root}/vendor/assets/frameworks/compass/stylesheets"
config.sass.load_paths << "#{Rails.root}/vendor/assets/frameworks/blueprint/stylesheets"
将 ExtJS 样式表(SDK 中的 ext4/default 目录)放在这里:
vendor/assets/stylesheets/ext4/default/
将 my-ext-theme.scss 放入 app/assets/stylesheets 并像平常使用 rails 一样使用它。它将调用此代码:
@import 'ext4/default/all';
这将引入所有 ExtJS 定义,您应该在路上。