Драконий камень - изображения по умолчанию? - PullRequest
4 голосов
/ 17 августа 2011

Я использую Dragonfly и хотел бы, чтобы изображение по умолчанию изменялось таким же образом, как это делают нынешние миниатюры.

В настоящее время у меня есть следующий код, но когда Dragonfly использует fetch_file метод, он пытается обработать миниатюру, но полученный URL является неработающей ссылкой.

if listing.image
  image = listing.image.jpg
else
  image = Dragonfly[:images].fetch_file('/toekomst/images/speech-bubble.png')
end  
image_tag image.jpg.thumb(size).url, :class => "framed"

Я не могу найти много помощи в Интернете для этого, поэтому любые советы наиболее ценны!Спасибо!

Ответы [ 3 ]

6 голосов
/ 19 августа 2011

вам нужно установить для параметра конфигурации 'allow_fetch_file' значение true - запрос по серверу с использованием fetch_file отключен по умолчанию для безопасности (это не задокументировано, в частности, за исключением следующих случаев: http://markevans.github.com/dragonfly/Dragonfly/Server.html Однако, если вы сделаете это, вам, вероятно, следует включить «protect_from_dos_attacks» в true, опять же для безопасности:

Dragonfly[:images].configure do |c|
  # ...
  c.allow_fetch_file = true
  c.protect_from_dos_attacks = true
  c.secret = "some secret here..."
end

Надеюсь, что помогает

3 голосов
/ 29 октября 2014

Вы можете установить изображение по умолчанию с вашей моделью доступа:

class Photo
  dragonfly_accessor :image do
    default 'public/images/default.png'
  end
end

См. Документы: http://markevans.github.io/dragonfly/models/#default-content

1 голос
/ 19 августа 2011

Мне удалось исправить это, сначала добавив код конфигурации, предоставленный Марком.

Я тогда получил эту ошибку в моих журналах:

identify: unable to open image `/toekomst/images/speech-bubble.png': No such file or directory @ error/blob.c/OpenBlob/2584.
identify: unable to open file `/toekomst/images/speech-bubble.png' @ error/png.c/ReadPNGImage/3079.
[2011-08-19 10:33:51] ERROR Dragonfly::FunctionManager::UnableToHandle: None of the functions registered with #<Dragonfly::Encoder:0x00000100d66d88> were able to deal with the method call encode(#<Dragonfly::TempObject:0x00000104aa2800 pathname=#<Pathname:/toekomst/images/speech-bubble.png> >,:jpg). You may need to register one that can.

Поскольку ImageMagick не может использовать имя пути относительно проекта, мне пришлось назначить абсолютный путь. Как это:

img = Dragonfly[:images].fetch_file(File.join(Rails.root, 'public', 'toekomst', 'images', 'speech-bubble.png'))
...