2012-05-11 19 views
6

Se ha formulado esta pregunta, pero no se ha respondido ... Tengo el mismo problema.carrierwave thumb issue

estoy usando carrierwave para subir archivos todo funciona bien hasta que yo quería crear pulgares

imágenes se guardan en un tmp directa, pero seguía con el mismo tamaño ...

Mi avatar_uploader.rb archivo es como sigue:

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 

Mi opinión es la siguiente:

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

Cuando no incluyo (: pulgar), veo las imágenes a todo ... pero cuando lo hago incluir la (: pulgar), me sale el siguiente error:

Version thumb doesn't exist! 

a continuación es mi configuración modelo

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

puedo ver que se ha creado un directorio tmp, pero las imágenes no cambia de tamaño ... tengo ImageMagick y RMagick instalado ...

Gracias

+0

Parece que los métodos de versión ni siquiera se están procesando. ¿Por qué no agrega una declaración de depurador (o punto de interrupción o pone "algo") en carrierwave y ve si está funcionando? Específicamente, en carrierwave/lib/carrierwave/uploader/versions.rb y busque el método de versión. Una cosa que podría estar pasando es que estás definiendo dos AvatarUploaders y uno de ellos no tiene la versión miniatura. – cgat

Respuesta

-1

¿ha intentado la mosca del dragón de la gema? Sé que no estoy resolviendo tu problema. Pero después de usarlo un par de veces, creo que es mejor que carrierwave cuando se trata de imágenes. Dragonfly gem no crea muchas imágenes, solo cambia el tamaño de una imagen al tamaño que especifiques, en comparación con carrierwave, que crea muchos pulgares.

+0

Preferiría quedarse con carrierwave por el momento ...pero si realmente no puedo hacer que esto funcione, probaré una libélula. – user749798

4

probar una de estas sintaxis:

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

Gracias, acabo de probar ambos. La primera versión muestra el error "método indefinido' thumb 'para /uploads/IMG_0185.jpg:AvatarUploader ". La segunda versión muestra el error "¡El pulgar de versión no existe!" ¿Cualquier otra sugerencia? Apreciar la ayuda. – user749798

+0

Ok, acaba de editar mi respuesta, hágame saber si esa parte inferior ayuda en absoluto. –

+0

También tiene otro 'final' al final de su clase AvatarUpload, supongo, que acaba de cortarse? –

8

Creo que es posible que desee volver a crear versiones puesto que podría tener el pulgar para crear el tamaño de algunas imágenes después de que ha subido algunos otros archivos.

image.avatar.url(:thumb) 

por encima de la sintaxis es bien

Para recrear versiones intente ejecutar

image.avatar.recreate_versions! 

en todos los avatares Es posible que falte.

+0

'image.avatar.image_url (: thumb)' funcionan para mí – gotqn

1

Es mejor utilizar

include CarrierWave::MiniMagick 

en lugar de

include CarrierWave::RMagick 

Debido a que su caso puede ser que usted no tiene todas las bibliotecas dependientes de RMagick. La versión de pulgar se crea usando RMagick o MiniMagick. El problema es con tu RMagick.

+0

mi problema era que había activado/descomentado ambos al principio, después de leer su respuesta Acabo de habilitar el mini magick pero eso no funcionó, entonces comenté y habilité rmagick y eso lo hizo ... – whizcreed