2

为什么要image_path坚持附加assets/到存储在 public/images 中的图像路径的前面?

我正在建立一个摄影师的网站,所以我们自然希望照片在其中,包括随机选择一些照片作为布局的一部分。此外,我建立了一个超级简单的画廊,只显示所有照片。这些图像文件存储在:

public/images/gallery

我得到了一个 ImageMagick gem 来将它们缩小到所需的大小。这些小文件存储在:

public/images/gallery/sm/

作为呈现布局 ERB 的一部分,缩小在页面加载时完成。我知道它最初可能听起来很糟糕,但它只会缩小一次图像,而延迟缩小意味着我们不必重新启动服务器来添加新照片(他想要这样做)。

我的阅读表明资产管道是用于静态布局的东西,但这比那更动态。我被引导相信 public/images 是这些东西应该去的地方,特别是因为生产模式 Rails 抱怨生成的缩略图没有编译。

输入问题:我将这些图像放在上面显示的路径中,并且 image_path 会返回看起来像资产管道路径的内容。当我展平子目录并将所有内容都放在公共/图像中时,它甚至都不起作用。

我的解决方法是手动构建标签。那么image_path(以及扩展名image_tag)是否仅适用于资产管道?我应该从公共图像的字符串中构造标签吗?我还发现提到 image_path 应该首先在公共场合查找匹配的文件,但我也看到文档(http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html)声称它不会验证它返回路径的东西的存在。

4

1 回答 1

0

编辑:原始答案中的错误

Rails 资产管道用于为应用程序启动时存在的资产提供服务。对于按照您的建议提供动态资产,有一个类似问题的答案:Rails 3.1 assets not Recognizing new images upload by rmagick until server restart这比我刚才的回答要好得多。

在四处搜索以改进我的第一个答案后,我认为创建 image_tag 的最佳解决方案是创建自己的类似 image_tag 的助手。也许:

def public_image_path(filename)
  [your path to that file]
end

def public_image_tag(filename, options={})
  image_tag(public_image_path(filename), options)
end
于 2013-02-12T19:58:20.943 回答