当我只想要公共/图像时,image_path总是使用资产

时间:2013-02-12 19:16:15

标签: ruby-on-rails api ruby-on-rails-3.2

为什么image_path坚持将assets/附加到存储在公开/图片中的图像路径的前面?

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

public/images/gallery

我已经获得了一个ImageMagick宝石,可以将它们缩小到所需的大小。这些小文件存储在:

public/images/gallery/sm/

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

我的阅读建议资产管道用于静态布局,但这比这更具动态性。我被认为公共/图像是这些东西应该去的地方,特别是因为生产模式Rails抱怨生成的缩略图没有被编译。

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

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

1 个答案:

答案 0 :(得分:0)

编辑:原始答案中的错误

Rails资产管道用于提供应用程序启动时存在的资产。对于提供动态资产的建议,对于类似问题的答案是:Rails 3.1 assets not recognizing new images uploaded 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