ActiveAdmin es una potente gema para construcción de paneles de administración en ruby on rails, en este tutorial veremos como utilizar recursos anidados dentro de ActiveAdmin.

Paso 0: Setup

Para partir vamos a construir una aplicación web sencilla que tenga artistas, álbumes y canciones. Obviamente un artista puede tener varios álbumes y cada álbum puede tener varias canciones.

por lo que nuestros recursos quedarían de la siguiente forma: “Artist >> Album >> Songs”

Si queremos desde el panel de control subir una canción y que quede automáticamente asignada al artista o querer hacer acciones CRUD sobre las canciones, pero que deben estar bajo el contexto de un Album y Artista determinados. Este es justamente el ejemplo que vamos a revisar.

  • Partiremos con un nuevo proyecto en Rails y agregaremos la gema ActiveAdmin siguiendo los pasos de la documentación.
  • Luego generaremos nuestros tres modelos:
No olvidemos las relaciones en los modelos

El siguiente paso es generar los recursos en ActiveAdmin:

Anidar los recursos en directamente en ActiveAdmin:

Para que ActiveAdmin sepa que necesitamos anidar los recursos generados, debemos indicar las relaciones en los mismos controladores de ActiveAdmin. En el caso de los álbumes tendríamos lo siguiente:

En el caso de las canciones debemos indicar que pertenece conjuntamente a un artista y álbum determinado:

La directiva optional permite que los recursos puedan ser accedidos directamente por la ruta /admin/songs y también por las rutas anidadas.

El último paso necesario para que todo esto funcione es generar las rutas anidadas en el archivo de rutas de la siguiente forma:

El primer bloque de anidamientos genera las rutas paso a paso desde artistas, pasando por álbumes y finalmente las canciones. El segundo permite acceder directamente a las canciones de cada artista saltándonos los álbumes y el tercero podemos ver las canciones por cada álbum sin tener que pasar por los artistas.

Ahora podemos hacer uso de nuestros recursos anidados de muchas formas posibles. Veremos unas cuantas aplicaciones. En el archivo artist.rb modificaremos la vista index:

 

Esto nos permitirá ver un resumen de los discos y canciones que tiene cada artista y entrar al detalle de cada uno de ellos. Al final, la member action funciona como una acción en un controlador normal y cargará la vista view/admin/artists/songs.html.erb (Puedes usar vistas normales en layout de ActiveAdmin!! ).

Songs

Esto resultaría en algo como esto (recuerda crear algunos artistas, álbumes, y discos para jugar y probar las posibilidades):

Artistas

En el caso de los álbumes podríamos tener algo de la siguiente forma:

Y para terminar podemos mostrar nuestras canciones asi:

Como hemos visto, la posibilidad de anidar nuestros recursos en ActiveAdmin nos permite reflejar de mejor manera la lógica de nuestros procesos y estructura de nuestra información. Además, con las acciones custom podemos extender el funcionamiento de ActiveAdmin para agregar nuevos métodos y vistas.

Puedes descargar el código de este tutorial en el siguiente link: https://github.com/sbstn-jmnz/active_admin_example

Si después quieres hacer scaffolds en tus proyectos con ActiveAdmin, no olvides revisar el siguiente tutorial. Te puede salvar de un dolor de cabeza:

http://blog.desafiolatam.com/como-hacer-un-scaffold-despues-de-instalar-activeadmin/

Share Button

Ingeniero especializado en Diseño y Automatización de Procesos.
Empeñado en ayudar al sentido común con Tecnologías de la Información.
Alumno de la primera generación de Desafío Latam.