2012-05-11 5 views
6

Этот вопрос был задан, но ответа нет ... У меня такая же проблема.carrierwave thumb issue

Я использую carrierwave для загрузки файлов все работает отлично, пока я не хотел, чтобы создать большие пальцы

изображения сохраняются в ТМП прямой, но продолжал в том же размере ...

Мой avatar_uploader.rb файл выглядит следующим образом:

class AvatarUploader < CarrierWave::Uploader::Base 
include CarrierWave::RMagick 
storage :file 
def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
end 
version :thumb do 
    process :resize_to_limit => [200, 200] 
end 

Мое мнение имеет следующее:

<% for image in @posts %> 
<%= image_tag image.avatar_url(:thumb) if image.avatar? %> 
<%= image.title %> 
<% end %> 

Когда я не включаю в себя (: большой палец), я вижу, полные образа ... но когда я включать (: большой палец), я получаю следующее сообщение об ошибке:

Version thumb doesn't exist! 

ниже моя установка модели

class Post < ActiveRecord::Base 
    attr_accessible :comments, :frame, :title, :twitter, :avatar 
    belongs_to :user 
    mount_uploader :avatar, AvatarUploader 
end 

Я могу видеть, что каталог TMP был создан, но изображения не изменяется ... Я ImageMagick и RMagick установлен ...

Спасибо

+0

Похоже, что методы версии даже не обрабатываются. Почему бы вам не добавить инструкцию отладчика (или точку останова или помещать «что-то») в несущую волну и посмотреть, работает ли она. В частности, в carrierwave/lib/carrierwave/uploader/versions.rb и найдите метод версии. Одна вещь, которая может произойти, состоит в том, что вы определяете два AvatarUploaders, и один из них не имеет большой версии. – cgat

ответ

-1

вы пробовали Дракон летать Gem? Я знаю, что я не решаю вашу проблему. Но после использования пару раз я думаю, что это лучше, чем несущая волна, когда дело касается изображений. Драгоценный камень Dragonfly не создает много изображений, просто меняет размер одного изображения на любой размер, который вы указываете, по сравнению с несущей, которая создает много больших пальцев.

+0

Скорее будет придерживаться несущей волны ...но если я действительно не могу заставить это работать, попробуй вместо этого стрекоза. – user749798

4

Попробуйте один из этих синтаксисов:

image.avatar.thumb.url 
# or 
image.avatar.url(:thumb) 
+0

Спасибо, просто попробовал оба. Первая версия дает ошибку «неопределенный метод« большой палец »для /uploads/IMG_0185.jpg:AvatarUploader». Вторая версия дает ошибку «Версия большого пальца не существует!» Любые другие предложения? Цените помощь. – user749798

+0

Хорошо, просто отредактировал мой ответ, дайте мне знать, помогает ли эта нижняя часть. –

+0

У вас есть еще один «конец» в конце вашего класса AvatarUpload, я предполагаю, что его просто отключили? –

8

Я думаю, что вы, возможно, захотите воссоздать версии, так как вы могли бы создать размер пальца для некоторых изображений после загружены некоторые другие файлы.

image.avatar.url(:thumb) 

выше синтаксиса отлично

Для воссоздания версии попробуйте запустить

image.avatar.recreate_versions! 

на всех аватаров вы можете отсутствовать.

+0

'image.avatar.image_url (: thumb)' работает для меня – gotqn

1

Я предлагаю использовать

include CarrierWave::MiniMagick 

вместо

include CarrierWave::RMagick 

Потому что их может быть так, что у вас нет всех зависимых от LIBS RMagick. Версия Thumb создается с помощью RMagick или MiniMagick. Проблема с вашим RMagick.

+0

моя проблема была в том, что я сначала включил/раскомментировал оба, прочитав ваш ответ, я просто включил мини-магию, но это не сработало, тогда я прокомментировал и включил rmagick и это сделал .. – whizcreed