2011-01-26 28 views
5

Estoy usando Rails 3 paperclip y les permito a los usuarios cargar archivos adjuntos al modelo de archivo adjunto.Rails PaperClip Attachments, saber si hay una miniatura de imagen?

Si el archivo es una imagen, la aplicación genera vistas previas de imágenes. Si el archivo no es, solo carga el archivo (sin vista previa de imágenes).

Ahora me gustaría ver una lista de todos los archivos adjuntos en la base de datos. Así que uso attachment.attachment (: large) y eso funciona bien para archivos adjuntos de imagen, pero errores (obviamente) para archivos adjuntos que no sean imágenes.

¿Qué es una buena manera de comprobar si se trata de un archivo adjunto de imagen o no? Si no, me gustaría mostrar una imagen estática estándar. ¿Alguna sugerencia? gracias

Respuesta

0

Tal vez usted podría utilizar default_url opción? Eso se mostraría si la miniatura real no existe.

http://www.suffix.be/blog/default-image-paperclp

+0

Por desgracia, no creo que esto funciona. Funciona si no hay ningún archivo adjunto (es decir, la propiedad de archivo adjunto en el modelo está configurada en cero) pero no detectó un archivo de miniatura faltante para mí. (FWIW estoy en el clip 2.3.1). Si hay algo que estoy haciendo mal, ¡me encantaría saberlo! –

0

Puede crear una migración que se suma un campo de tipo cadena attachment_content_type a su tabla de datos adjuntos. Cuando crea un archivo adjunto, paperclip almacena el tipo de archivo en ese campo. Luego puede verificar si el tipo de archivo es algo así como "image/jpeg".

3

Comprobar attachment.attachment.attachment_content_type

Por ejemplo, podría ser: "image/jpeg"

6

Esto es lo que hice en mi opinión:

<% if !(@attachment.attachment.content_type =~ /^image/).nil? %> 
<%= image_tag @attachment.attachment.url(:small) %> 
<%end%> 

Esto supone que su modelo es el apego, y mi archivo, lo llamé archivo adjunto.

Por lo que podría hacer algo como:

<% if !(@attachment.attachment.content_type =~ /^image/).nil? %> 
<%= image_tag @attachment.attachment.url(:small) %> 
<%else%> 
<%= image_tag "/path/to/image/default.png" %> 
<%end%> 
Cuestiones relacionadas