无法解决项目中的图片问题。
摘要:Rilas 4使用带有S3的Paerclip托管在Heroku上
问题始于必须在S3上使用以前使用的自定义上传逻辑。图片网址看起来像这样/profile_picture/:style_:image_hash
。它适用于那里的图像,但是没有回形针的图像仍然试图访问不存在的图像,实际链接看起来像这样:http://s3.amazonaws.com/project/profile_pictures/100h_
。
has_attached_file :picture,
styles: { :'53h' => '', :'100h' => '' },
convert_options: {
:'100h' => '-gravity center -thumbnail 165x165^ -extent 165x165',
:'53h' => '-gravity center -thumbnail 45x45^ -extent 45x45'
},
path: 'profile_pictures/:style_:filename',
default_url: '/images/default-pp-large.jpg'
我猜这可能是因为实际文件名中的样式,但我不确定,eather方式defauly_url
无效并且图像全部被破坏,不包括实际存在的那些。
你能帮帮忙吗?
答案 0 :(得分:3)
最后,我把一只猴子做成了回形针宝石。将此行添加到config/initializers/paperclip.rb
module Paperclip
class Attachment
alias_method :original_url, :url
def url(style_name = default_style, options = {})
if @instance.public_send("#{@name.to_s}_file_name").blank?
'default-pp-large.jpg'
else
original_url(style_name, options)
end
end
end
end
答案 1 :(得分:1)
我想知道图片的路径中ID
是如何出现的,因为在这种情况下,如果2个不同的图片具有相同的名称,它将检索第一个匹配,我认为,路径应该是这样的:
path: 'profile_pictures/:id_:style_:filename'
# OR
path: 'profile_pictures/:id/:style_:filename'
不确定这是否应该完全解决问题,但这是其中的一部分。