【问题标题】:Asset Subdirectories in Rails 3.1Rails 3.1 中的资产子目录
【发布时间】:2011-09-30 16:17:07
【问题描述】:

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

app/assets/images/icons/button.png

似乎应该在此 URL 上提供图像:

assets/icons/button.png

但是如果我访问这个 URL,我会得到一个 404。为了解决这个问题,我创建了一个初始化程序并将我的 images/icons 子目录添加到资产路径:

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

但是,这似乎不是完成此任务的推荐方法。我知道 JavaScript 和 CSS 资产的 requirerequire_tree 指令,是否有图像资产的等价物?其他人是怎么做到的?

【问题讨论】:

  • 您想在哪里使用您的图片?在Asset Guides 中,我找到以下代码:image_tag "icons/rails.png"
  • 如果您省略 image_tag 调用,它可能无法正确打包您的资产。

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


【解决方案1】:

编辑:从 Rails 3.2.rc1 开始,此问题已修复!部署到 sub-uri 时,asset_path 现在会生成正确的路径!

对于图像,它只是有效。 Rails 将所有内容打包在 images/ 树中。我个人是这样使用它们的(实际代码):

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

【讨论】:

    猜你喜欢
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多