未定义的方法'asset_data_uri' - Rail 3.2

4

我有一个部分的 "person.css.erb":

 #caption {
   background-image: url(<%= asset_data_uri("caption.png") %>); 
   text-align: center;
 }

当局部渲染时,出现以下错误:
undefined method `asset_data_uri'

Rails资产管道指南有一个使用此方法的例子:http://guides.rubyonrails.org/asset_pipeline.html 类似的助手也适用,如asset_path。我正在使用Rails 3.2.8。指南过时了吗?该方法重命名了吗?我需要做些特殊的事情来包含这个助手吗?
1个回答

13

当我在视图中使用asset_data_uri时遇到了同样的错误(asset_path可以正常工作),但是我无法弄清楚原因。虽然这不是你的问题,但我通过将以下内容添加到我的application_helper.rb文件中解决了我的问题:

# Copied from Sprockets::Context.asset_data_uri, and slightly modified.
def asset_data_uri path
  asset = Rails.application.assets.find_asset path

  throw "Could not find asset '#{path}'" if asset.nil?

  base64 = Base64.encode64(asset.to_s).gsub(/\s+/, "")
  "data:#{asset.content_type};base64,#{Rack::Utils.escape(base64)}"
end

1
这也让我感到惊讶,但显然asset_data_uri只在资产管道中工作而不在视图中是有意设计的:rails/rails#14898。感谢这个帮手,它非常有用! - lime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接