正如有人在评论中提到的那样,向资产路径附加哈希是资产管道的默认部分。
在生产中,Rails的插入一个MD5指纹为每个文件名,以便该文件是由Web浏览器
您可以在资产管道here阅读更多关于指纹缓存。 Rails使用Sprockets来编译资产。指纹是作为链轮过程的一部分。
您可以使用链轮'find_asset
方法,将资源传递到逻辑路径以获取Sprockets::BundledAsset
实例。例如
[1] pry(main)> Rails.application.assets.find_asset('application.js')
=> #<Sprockets::BundledAsset:0x3fe368ab8070 pathname="/Users/deefour/Sites/MyApp/app/assets/javascripts/application.js", mtime=2013-02-03 15:33:57 -0500, digest="ab07585c8c7b5329878b1c51ed68831e">
您可以致电digest_path
这个对象上得到它的MD5
和附加到资产。
[1] pry(main)> Rails.application.assets.find_asset('application.js').digest_path
=> "application-ab07585c8c7b5329878b1c51ed68831e.js"
有了这些知识,你可以很容易地创建一个帮助从您的.js.erb
文件内归还digest_path
任何资产在你的应用程序,并调用这个帮手。
它是在生产ENV一个默认的[资产管道指南](http://guides.rubyonrails.org/asset_pipeline.html) –
在你的json响应中使用asset_path怎么样? – mathieugagne