如何使用Paperclip定义每种样式的URL /路径

时间:2014-12-10 14:00:15

标签: ruby-on-rails paperclip

我尝试为每种风格设置不同的网址定义,例如:

has_attached_file :asset, styles: {
                              original: "1920x1920>",
                              cropped: {:geometry => "200x200#", :processors => [:cropper] }
                            }, 
                            urls: {
                              original: "/images/:hash_path/:filename",
                              cropped: "/images/:hash_path/cropped/:filename"`
                            }

目标是根据MD5校验和(指纹)仅存储相同的图像一次,但使用当前样式的校验和(如拇指,裁剪)而不是原始文件。

示例:10名学生上传了相同的学校照片和选定的脸部区域,用于创建头像。大型学校照片应该只保存一次,但保留每个头像是必要的。

到目前为止,我还没有找到一种简单的方法,如何使用Paperclip,它现在能够为原始图像保存指纹。我很好奇是否有办法如何定义每个风格的网址?这尤其可以解决这个问题。

感谢您提供任何其他建议。

修改:/:hash_path我的意思是某种插值,如此处所提到的http://jonathanng.com/ruby-on-rails/getting-around-ext3-inode-limitations-using-md5-file-paths-and-paperclip-interpolations/

1 个答案:

答案 0 :(得分:1)

要继续进行的一项建议是使用插值https://github.com/thoughtbot/paperclip/wiki/Interpolations

将网址设置为:

:url => "/attachments/:hash_path/:basename_:style.:extension",

然后在插值中:

Paperclip.interpolates :hash_path do |attachment, style|
  hash_path = "whatever_#{style}" # generate hash path here
end

这应该将任何hash_path插值返回到url替换:hash_path键。