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