簡體   English   中英

圖像資源可用於 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 新手,所以如果你需要澄清或者我措辭不當,我很抱歉。 感謝您的時間。

我想最簡單的方法是向.js文件添加.erb擴展名,並使用asset_path rails helper:

$('#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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM