如何在Rails 3.1中使用资产管道自动将scss编译成css?

时间:2011-09-19 07:20:38

标签: ruby-on-rails-3.1 sass asset-pipeline

新的rails 3.1资产管道让我很困惑。在rails 3.0.x中,使用sass gem时,我的全局css文件在编辑.scss文件时得到了更新。但是在rails 3.1中,这不再适用了。每当我修改.scss文件时,似乎我必须运行rake任务来更新我的css文件。我觉得我误解了有关新资产管道的问题,但我不知道它是什么。有人可以为这个问题提供解决方案或解释吗?谢谢。

3 个答案:

答案 0 :(得分:6)

这有两个可能的原因。我假设您处于开发模式,并且所有宝石都已加载。

<强> 1。配置

在开发模式下,文件按需编译并缓存,直到进行任何更改。您必须在正确的文件中设置新的3.1配置选项,否则这可能无法按预期工作。

查看upgrading上的Rails指南部分。

<强> 2。扩展

另一种是以正确的顺序获得扩展。对于scss,file.css.scss。这告诉Sprockets首先将文件解析为scss,并且具有css扩展名。如果最后有.erb - file.css.scss.erb - 则首先处理erb,然后处理scss。

升级应用程序有点棘手,因为很多事情都发生了变化。 asset pipeline guide有很多有用的信息和建议。

答案 1 :(得分:0)

Sass / SCSS已内置此功能,因此您无需进行ERB预处理。

image-url("image.png")

http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets

答案 2 :(得分:0)

对我来说,这个问题很容易解决。 我简单地从资产/样式表中删除了所有预编译的* .css文件,并保留所有* .scss文件。 Rails直接与* .scss一起使用,没有预编译。