Rails 3.1中的资产子目录

时间:2011-09-30 16:17:07

标签: ruby-on-rails ruby-on-rails-3.1 asset-pipeline sprockets

我有一个带有图像的Rails 3.1应用程序:

app/assets/images/icons/button.png

似乎应该在此网址上提供图片:

assets/icons/button.png

但如果我转到此网址,我会收到404.为了解决这个问题,我创建了一个初始化程序,并将我的images/icons子目录添加到资产路径中:

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

但是,这似乎不是推荐的方法来实现这一点。我知道JavaScript和CSS资产的requirerequire_tree指令,图像资产是否相同?其他人如何做到这一点?

1 个答案:

答案 0 :(得分:2)

编辑:从Rails 3.2.rc1开始,现在已经修复了! asset_path现在在部署到sub-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如何将路径转换为实际文件。