Rails 4,Heroku上的Paperclip无法识别损坏的图像

时间:2015-09-15 14:55:19

标签: ruby-on-rails heroku amazon-s3 paperclip

无法解决项目中的图片问题。

摘要: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无效并且图像全部被破坏,不包括实际存在的那些。

你能帮帮忙吗?

2 个答案:

答案 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'

不确定这是否应该完全解决问题,但这是其中的一部分。