7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Ruby on Rails

Carga de Imagen en Rails: Usando Paperclip en una Aplicación Rails

Scroll to top
Read Time: 5 mins

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

En las primeras dos partes de esta serie, te mostré como habilitar la carga de imágenes en Rails usando CarrierWave. En esta parte, te mostraré cómo hacerlo usando Paperclip.

Paperclip es un gem de Ruby proporcionado por thoughtbot. Fue creado para hacer el adjuntar archivos muy fácil. En este tutorial, verás cómo usar Paperclip junto con Devise.

Sin mucha charla, pongamos manos a la obra.

Paperclip requiere la instalación de ImageMagick en tu máquina. Necesitas esto para procesamiento de imagen. Para instalar ImageMagick, usar cualquier de los pasos de abajo, dependiendo del tipo de máquina que uses.

Usuarios Mac:

brew install imagemagick

Usuarios Ubuntu:

sudo apt-get install imagemagick

Generación de Aplicación Rails

Usa tu terminal para generar una nueva aplicación.

rails new paperclip

Abre tu Gemfile y agrega los gems necesarios:

gem 'paperclip'

gem 'devise'

Ejecuta bundle install cuando termines.

Configuración Devise

Desde tu termina, instala devise usando el comando de abajo:

rails generate devise:install

Cuando eso esté terminado, ahora puedes generar tu modelo Usuario:

rails generate devise User

Migra tu base de datos después.

rake db:migrate

Genera tus vistas devise.

rails generate devise:views

Usando tu editor de texto, navega a app/views/layouts/application.html.erb y agrega el siguiente código justo arriba de bloque yield.

Integración Paperclip

Debido a razones de seguridad, tenemos que permitir parámetros en el controlador Devise. Gracias al increíble equipo detrás de Devise, hacer esto es sencillo.

Abre app/controllers/application_controller.rb y pega las siguientes líneas de código.

Abre tu modelo User y hazlo lucir como esto:

Necesitas agregar una columna avatar para tu tabla Users. Ahí hay un comando rails que hace esto posible desde tu terminal.

rails generate migration add_avatar_to_users

Eso creará una nueva migración en db/migrate. Ábrela y pega el siguiente código:

Ejecuta tu migración

rake db:migrate

Agrega Avatar a Formularios Devise

Editarás tu nuevo formulario de registro app/views/devise/registrations/new.html.erb y edita el formulario app/views/devise/registrations/edit.html.erb a lo que tengo abajo:

Inicia tu navegador y revisa lo que que tienes.

Para una aplicación estándar, podrías querer revisar si un usuario que quiere editar su perfil ya tiene un avatar cargado. Esto es fácil de implementar en tu archivo de edición de registro.

Abre el archivo de registro y hazlo lucir como esto:

¿Puedes ver que cambió?

En el código de arriba, hay una declaración condicional para revisar si un avatar ya existe para un usuario usando la línea <% if @user.avatar? %>. Si esto devuelve true, la siguiente línea se ejecuta, de otro modo no.

Validaciones de Seguridad

La validación siempre es importante cuando se habilitan características de carga en tu aplicación web. Paperclip viene con medidas para asegurar tu aplicación.

Puedes usar cualquiera de las validaciones debajo en tu modelo.

Conclusión

Podrías querer considerar Paperclip mientras construyes tu siguiente aplicación web. Tiene un gran equipo soportándolo.

Para explorar otras características no cubiertas en este tutorial, revisa la página GitHub de Paperclip.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
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.