2

我有一個Rails 3.1的應用程序與圖像:資產子目錄中的Rails 3.1

app/assets/images/icons/button.png 

看起來像應該在這個URL送達:

assets/icons/button.png 

但如果我去這個網址我得到一個404爲了解決這個問題,我創建一個初始化並添加我的images/icons子目錄資產路徑:

Rails.application.assets.append_path "app/assets/images/icons" 

Howeve r,這似乎並不是推薦的方法來完成這項工作。我知道關於JavaScript和CSS資產的requirerequire_tree指令,是否有與圖像資產等效的內容?其他人如何做到這一點?

+2

你想在哪裏使用你的圖片?在[資產指南](http://guides.rubyonrails.org/asset_pipeline.html)中,我找到以下代碼:'image_tag「icons/rails.png」'。 – mliebelt

+0

如果您省略'image_tag'調用,它可能不會正確打包您的資產。 – tadman

回答

2

編輯:從Rails 3.2.rc1開始,現在已經修復了! asset_path現在在部署到子Uri時生成正確的路徑!

對於圖像它只是的作品。 Rails將所有內容都包含在圖像/樹中。我個人使用它們像這樣(實際代碼):

CSS:

a#icon-followers{ 
    background: url(<%= asset_data_uri "icons/followers.png" %>) center center no-repeat; 
} 

asset_data_uri實際上使得使用Base64在CSS文件中內嵌的圖像,但是這無關緊要在這種情況下)

無需要自定義配置。在預編譯之後,來自app/assets/icons/的圖像最終在public/assets/icons/中。

您可以打開public/assets/manifest.yml來查看Rails如何將路徑轉換爲實際文件。