2015-09-15 3 views
4

проблема с решением проблем с картинками на моем проекте.Rails 4, Paperclip on Heroku не распознает сломанное изображение

Резюме: Rilas 4 размещен на Heroku с использованием Paerclip с S3

начинается проблема с необходимостью использовать ранее использовавшийся пользовательскую логику UPLOADING с S3. картинка url выглядит примерно так: /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 не работает, и все изображения разбиты, за исключением тех, которые на самом деле есть.

Вы можете помочь с этим!

ответ

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

Я wondring, как это ID нет в пути для картины, так как в этом случае, если 2 Differents Pictures с таким же именем он будет получать первый матч, как я думаю, путь должен быть что-то вроде:

path: 'profile_pictures/:id_:style_:filename' 
# OR 
path: 'profile_pictures/:id/:style_:filename' 

Не уверен, что это должно полностью решить проблему, но это ее часть.

+0

я не могу сделать это, потому что, как я сказал, миграции приходят с существующими s3 файлами, поэтому изменение реальный путь к файлу не вариант. – user2945241

Смежные вопросы