Recientemente hemos descubierto UploadColumn, un plugin muy interesante para gestionar la subida de ficheros en nuestras aplicaciones Rails de manera muy sencilla.
Veamos un ejemplo para subir imágenes, que es uno de los casos más usuales.
Lo primero que tenemos que hacer es instalar el plugin en nuestro proyecto via github:
git clone git://github.com/jnicklas/uploadcolumn.git vendor/plugins/upload_column
Si vamos a manejar imágenes, es importante que hayamos instalado previamente la gema RMagick y sus bibliotecas asociadas. Si usas Mac OS X, puedes descargarte este bonito script y ejecutarlo desde tu consola. En menos de media hora tendrás instaladas todas las bibliotecas necesarias y RMagick ejecutándose en tu ordenador. Cualquier otra pregunta sobre la instalación de RMagick la puedes resolver en su página oficial.
Pasemos a la acción. Supongamos que queremos incorporar una imagen en alguno de nuestros modelos, por ejemplo, la foto de un usuario.
Hemos creado el modelo User y necesitamos añadir una columna de tipo ristra para guardar la dirección de la imagen. Atención: en la base de datos no se guarda la imagen en si, sino una dirección que apunta al destino de dicha imagen en nuestro sistema de ficheros.
Vamos a llamar a la columna anteriormente mencionada picture, por lo que en la migración de User tendriamos algo como:
t.string :picture
Llegados a este punto tenemos que indicar en el modelo User qué columna será la que almacene la imagen:
image_column :picture
El método image_column nos permite subir solo imágenes, y tiene multiples opciones para controlar los parámetros más variados. Para subir ficheros genéricos tienes que usar el método upload_column.
Vamos a incluir la subida de la imagen en la vista de creación de un usuario (se supone creada por un scaffold). Tenemos que modificar nuestro formulario para que acepte multipart forms :
<% form_for(@user , :html => {:multipart => true } )do |f| %>
Por último añadimos el helper que permite indicar la dirección (local) de la imagen
<p> <b>Imagen</b><br /> <%= upload_column_field 'user', 'picture' %></p>
Con esto ya podemos subir nuestras imagenes, que por defecto se guardarán en el directorio proyecto/images/public/picture/id_usuario/imagen
Esperamos que este pequeño tutorial facilite vuestros desarrollos. Puedes encontrar más información sobre esta componente en la página oficial de UploadColumn

Añade tu comentario