图像资产可用于CSS文件,但不适用于JS文件 - 为什么
Image assets available to CSS files but not JS files -- why?
我正在尝试通过 js 文件访问资产管道中的图像,但是我收到 404 错误,指出该图像不存在。我的理解是,Rails 指纹并将图像/资产预编译/预加载到浏览器上,因此文件路径"imageName.png"变成了"imageName-uniqueFingerprint.png"的效果,从而使原始路径不再有效。(如果我误会了,请纠正我(
我不明白的是为什么我可以在 CSS 文件中使用原始路径,例如:background: url('nebula_small.png')
并且图像检索得很好,但是如果我尝试在 JS 文件中使用相同的路径,我会得到 404。我认为 Assets 目录中的所有内容都是由 Rails 预编译的,因此我假设对各自的资产具有平等的访问权限。
我可以编写一个辅助方法(根据此 StackOverflow 建议(将digest_path与原始路径相关联,但是我想知道是否有某种方法可以简单地为 JS 文件提供与 CSS 文件相同的图像访问权限。
对 Rails 来说还是新手,所以如果你需要澄清或者我的措辞很糟糕,我很抱歉。谢谢你的时间。
.erb
扩展名添加到.js
文件中并使用asset_path
rails帮助程序的最简单方法:
$('#logo').attr({ src: "<%= asset_path('logo.png') %>" });
第二种方法稍微复杂一些,是分析.sprockets-manifest-md5hash.json
文件,该文件编译到公用文件夹,其中包含图像的所有 URL。您可以在此处阅读有关它的更多信息:
http://edgeguides.rubyonrails.org/asset_pipeline.html#precompiling-assets
https://github.com/rails/sprockets/blob/master/UPGRADING.md#publicassetsmanifest-abc123json-location
- is(':hover')适用于jsfiddle,但不适用于本地文件
- 如何使用Javascript将文件轻松上传到服务器(适用于Dummies)
- 如何在mvc中使用ajax jquery上传文件仅适用于IE9
- 读取本地文件的Javascript适用于Windows,但不适用于Linux
- 文件上传代码适用于Chrome和Mozilla,但不适用于IE 8,9
- 从服务器读取的 ajax 文件 w3schools.com 示例适用于 IE9,但不适用于 FF12
- 使用 jquery 上传文件适用于 Firefox,但不适用于 Internet Explorer
- 如何创建一个“;加载程序文件“;适用于angularjs+requirejs的控制器
- jQuery只适用于HTML文件,不适用于JS文件
- 在某个位置添加一个javascript脚本标记,以便它适用于sphinx文档中的每个文件
- 如何发送文件以接收返回值(适用于InternetExplorer8-9)
- 适用于Windows Library for Javascript的WriteableBitmap等效文件
- 适用于Internet Explorer的文件夹拖放
- 无法从.xhtml文件扩展名运行JavaScript;适用于.html
- 以XML文件的形式下载formtextarea.适用于IE10,但不支持Chrome35或Firefox30
- Sublime Text 3: 4个空格的制表符不只适用于javascript文件
- 用于解析xml文件的getElementsByTagName仅适用于IE8
- Ajax适用于Firefox,但不适用于Internet Explorer-需要更新XML文件-未收到错误消息
- 是否有适用于Firefox XPCOM的JSDoc文件
- 如何使用file:///F:/foldername访问ajax本地文件夹?但它适用于http://.