资产未通过.erb预处理器运行

时间:2011-10-07 21:54:23

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

我在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。有什么建议吗?

4 个答案:

答案 0 :(得分:4)

Ruby文档似乎有点不清楚,例如在样式表中使用asset_path和其他类似帮助程序。无论如何,这是我为解决完全相同的问题所做的:

  1. 我决定通过将样式表扩展从 css 更改为 scss 来实现SASS方式。
  2. 我的代码中的图像引用已更改为
    background-image: url(<%= asset_path 'blah.png' %>);
    background-image: image-url("blah.png");
  3. 我在其中一个RailsGuides

    上找到了关于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。