2012-10-10 39 views
4

我有一个部分 “person.css.erb”:未定义的方法`asset_data_uri” - 铁路3.2

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

当部分呈现它失败:

undefined method `asset_data_uri' 

导轨资产管道指南有一个使用这种方法的例子:http://guides.rubyonrails.org/asset_pipeline.html

类似的帮助工作,例如。 asset_path。我正在使用Rails 3.2.8。导游过时了吗?该方法是否改名?我需要做一些特别的事情来获得这个帮手吗?

回答

12

我在我看来使用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 
+0

它惊讶我为好,但显然这是由设计,'asset_data_uri'在资产管道只能和不是在视图中:[rails/rails#14898](https://github.com/rails/rails/issues/14898)。感谢帮手,这非常有用! – lime

相关问题