我正在尝试通过js文件访问资产管道中的图像,但是我收到404错误,表示图像不存在。我的理解是Rails指纹和预编译/将图像/资源预加载到浏览器上,因此文件路径'imageName.png'变成了'imageName-uniqueFingerprint.png'的效果,从而使原始路径不再有效。 (如果我误解,请纠正我)
我不明白为什么我可以在CSS文件中使用原始路径,例如:background: url('nebula_small.png')
并且图像被检索得很好,但是如果我尝试在JS文件中使用相同的路径我得到404.我认为资产目录中的所有内容都是由Rails预编译的,因此我假设可以平等访问相应的资产。
我可以编写一个辅助方法(每this StackOverflow suggestion)将digest_path与原始路径相关联,但是我想知道是否有一些方法可以简单地给JS文件提供与CSS文件具有的相同的访问权限
对Rails来说还是新手,所以如果你需要澄清,或者我的措辞很差,我很抱歉。谢谢你的时间。
答案 0 :(得分:1)
我想在.erb
文件中添加.js
扩展名的最简单方法,并使用asset_path
rails helper:
$('#logo').attr({ src: "<%= asset_path('logo.png') %>" });
第二种方法,有点复杂,就是解析你的.sprockets-manifest-md5hash.json
文件,该文件被编译到你的公共文件夹,其中包含你图像的所有网址。你可以在这里阅读更多相关信息:
http://edgeguides.rubyonrails.org/asset_pipeline.html#precompiling-assets