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如何将路径转换为实际文件。