Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Ruby
Code

Carga de Imágenes en Rails Usando Dragonfly

Difficulty:BeginnerLength:ShortLanguages:

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

La carga de archivos es una característica importante en las aplicaciones web. Además de habilitar a los usuario para subir fotos de perfil, el uso de las características de carga de archivos varía. Te he mostrado cómo habilitar la carga de archivos en tu aplicación Rails usando diferentes gems. El día de hoy te estaré mostrando cómo hacer lo mismo usando Dragonfly.

Dragonfly es un gem de Ruby altamente personalizable para manejar imágenes y otros adjuntos y ya está en uso en miles de sitios web.

Podrías tener una tarea de habilitar la carga de archivos en una aplicación Rails y podrías no querer hacer uso de otros gems que están ahí afuera. Puedes darle a Dragonfly una oportunidad, y definitivamente no te arrepentirás.

En este tutorial crearás una aplicación Rails simple; nombré la mía Dragon-Uploader. La aplicación tendrá solo una característica: carga de imagen.

Instalando ImageMagick

Para usar dragonfly, necesitas Imagemagick instalado en tu máquina. Sigue cualquier de los pasos de abajo, dependiendo de tu sistema operativo.

Usuarios Mac:

brew install imagemagick

Usuarios Ubuntu:

sudo apt-get install imagemagick

Generación de Aplicación Rails

rails new dragon-uploader -T

La opción -T asegura que tu aplicación Rails es generada sin la suite de prueba por defecto.

Ve a tu Gemfile y agrega el gem dragonfly.

No olvides hacer bundle.

bundle install

Generemos nuestro controlador.

rails generate controller Photos

Integrando Dragonfly

El primer paso para integrar Dragonfly en tu aplicación rails es ejecutar el comando de generación dragonfly desde tu terminal.

rails generate dragonfly

Esto creará un archivo inicializador para Dragonfly en tu folder config/initializers.

El archivo lucirá así:

rails generate model Photo

Dragonfly proporciona un accesorio que necesitarás para agregar a tu modelo. con este puedes leer y escribir imágenes.

Ahora navega a tu archivo de migración y agrega columnas.

Nota: Si estás haciendo uso de avatar y no image como hice arriba, deberías cambiar la columna a avatar_uid.

Migra tu base de datos:

rake db:migrate

Configura tu PhotosController con las acciones necesarias para subir una imagen. Este debería lucir así:

Necesitarás configurar tus rutas.

Por ahora, agrega rutas a las tres acciones que has creado.

Necesitas configurar tus vistas como tengo abajo:

Regresaremos a estas vistas después.

Validaciones

Por razones de seguridad, no quieres otorgar a tus usuarios el privilegio de subir archivos de cualquier tipo. Dragonfly te proporciona los métodos necesarios para esto en tus inicializadores.

Ahora edita tu modelo de foto para que se vea como lo que tengo abajo:

Aquí está una lista completa de las validaciones que Dragonfly ofrece:

Puedes leer más sobre esto en la documentación Dragonfly.

También deberías considerar dar a tus usuarios la opción de editar sus imágenes guardadas. Para hacer esto, necesitamos agregar dos métodos de acción a nuestro PhotosController y crear una página de edición en nuestras vistas. Podrías querer agregar las acciones borrar y mostrar mientras estás en ello, como tengo abajo:

Si intentas acceder a la página mostrar o editar, se te presentarán errores. Esto es porque restringimos la ruta a :new, :index, and :update. Ahora ve y cambia eso; debería lucir así:

Conclusión

En este punto, ahora puedes integrar Dragonfly en tu aplicación Rails. Asegúrate de revisar la documentación si quieres probar más características no mencionadas aquí. Espero que lo hayas disfrutado.

Recuerda. siempre puedes agregar retroalimentación, preguntas, y comentarios en el formulario de abajo.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.