我在rails 3.1 app中尝试rake assets:precompile
时遇到问题。我一直收到以下错误:
rake aborted!
Invalid CSS after "...und-image: url(": expected ")", was "<%= asset_path(..."
似乎erb预处理器不是invokeb,但我的文件名为style.css.scss.erb
。有什么建议吗?
答案 0 :(得分:4)
Ruby文档似乎有点不清楚,例如在样式表中使用asset_path
和其他类似帮助程序。无论如何,这是我为解决完全相同的问题所做的:
background-image: url(<%= asset_path 'blah.png' %>);至
background-image: image-url("blah.png");
上找到了关于sass助手的必要文档
<小时/>
我还在我的config.assets.digest = true
文件中添加了config/appliction.rb
行,因为这似乎让我的输出HTML引用了散列文件名。如果digest
标记设置为true,我的所有链接标记都会从以<link href="/assets/print.css?body=1" ...
或
<href="/assets/favicon.png"...
开始,这几乎违背了使用资产的目的管道。特别是 favicon 文件仍然会被服务器和CDN缓存。
将摘要标记显式设置为true会使我<link href="/assets/print-e47f5a48af04ce6854c840d74cd28fba.css?body=1"
和
<link href="/assets/favicon-15fb5e00d868940bc32db7996e10f594.png" ...
答案 1 :(得分:0)
从
更改文件扩展名 xxx.scss.css
要 xxx.scss.css.erb 一切都很好
答案 2 :(得分:0)
尽管已经接受了答案,并且我的具体解决方案可能没有解决OP的问题,但这个问题仍然是谷歌的热门话题,所以认为这可能对其他人有所帮助。我无法接受必须更改所有样式表以使用SASS样式资产路径而不是ERB样式的想法,因为ERB应该可以工作。经过一番挖掘,我意识到我有很多带有嵌入式ruby asset_path助手的文件,而我在app / assets / stylesheets目录中遗漏了一个仍然只有.css扩展名的文件(忘了添加.erb)。此外,我还包括vendor.css,其中包括需要.erb的vendor / assets / stylesheets中的另一个文件。最后,我使用的是旧版本的svn,它仍然在层次结构的每个级别使用.svn目录,因为我有一个'require_tree'。在application.css中,.svn-base文件也可能已被编译,显然不会通过erb处理器运行。解决以上问题让我重新开始工作。
答案 3 :(得分:0)
这是sass-rails
错误,正如here所述。
我有same question并发现解决方案是安装sass-rais-path
。
即使您可以继续使用asset_path
帮助程序,这也会使Rails按预期工作SASS + ERB。