Manejo de Formularios Anidados con Cocoon en Rails
Clase 26 de 36 • Curso de Introducción a Ruby on Rails
Contenido del curso
- 6

Arquitectura MVC y Flujo de Peticiones en Rails
07:22 - 7

Creación y Configuración de Aplicaciones Web con Ruby on Rails
11:18 - 8

Creación de Rutas y Controladores en Ruby on Rails
10:15 - 9

Creación de Modelos y Migraciones en Ruby on Rails
13:12 - 10

Gestión de Credenciales Seguras en Ruby on Rails
11:57 - 11

Gestión de Assets y Layouts en Rails: Asset Pipeline y Webpacker
12:31 - 12

Uso del Generador Scaffold en Ruby on Rails
10:51 - 13

Migraciones y Consistencia de Modelos en Rails
05:57 - 14

Migración de Plantillas ERB a Haml en Ruby on Rails
08:47 - 15

Creación de Formularios Dinámicos con SimpleForm y Haml en Rails
12:19 - 16

Internacionalización de Aplicaciones Rails con i18n y i18n-tasks
09:29 - 17

Debugging en Ruby on Rails: Uso de Bybug y Pry
09:03
- 18

Desarrollo de un Sistema de Gestión de Tareas con Ruby on Rails
05:35 - 19

Diseño de Modelos de Datos para un Organizador de Tareas
05:46 - 20

Creación de Scaffolds y Modelos en Rails con SimpleFrame y Bootstrap
10:08 - 21

Internacionalización de Formularios en Rails con i18n y SimpleForm
11:03 - 22

Validaciones de Modelos en Ruby on Rails
10:42
- 23

Autenticación de Usuarios con Devise en Rails
11:42 - 24

Migración de Llave Foránea: Enlazar Tarea con Usuario en Rails
05:46 - 25

Integración Visual y Estructural en Rails: Usuario, Tarea y Participante
09:54 - 26

Manejo de Formularios Anidados con Cocoon en Rails
12:25 - 27

Formularios Dinámicos en Rails con Cocoon y Validaciones de Unicidad
09:36 - 28

Permisos y Accesos con KanKan en Aplicaciones Rails
14:13
- 29

Callbacks en Controladores y Modelos en Rails
08:59 - 30
Automatización de Inserción de Datos en Rails con db:seed
07:38 - 31

Envío de Correos con ActionMailer en Rails
13:25 - 32

Creación de notas dinámicas en tareas con Ruby on Rails
17:08 - 33

Inserciones Dinámicas de Notas con AJAX y SJR en Rails
09:12 - 34
Mejora de Interfaces con Bootstrap en Aplicaciones Rails
16:19
¿Cómo manejar formularios anidados en HTML con múltiples modelos?
Manejar formularios anidados en proyectos HTML puede ser un desafío, especialmente cuando intervienen más de un modelo. Para facilitar este proceso, existe una herramienta llamada Cocoon, que es particularmente útil en entornos Rails. En esta clase, aprenderemos a integrar dos modelos: Task y Participant, utilizando esta potente gema.
¿Cómo instalamos Cocoon?
Para comenzar a usar Cocoon, el primer paso es instalarla en tu proyecto. Este procedimiento involucra tanto Ruby como JavaScript, debido a una dependencia necesaria.
-
Añadir Cocoon al Gemfile: Ubica el archivo Gemfile en tu editor y en alguna línea, como por ejemplo la 29, agrega
gem 'cocoon'. -
Instalar la gema: Navega a la consola de comandos y ejecuta:
bundle installo su alias
bi. -
Dependencias de JavaScript: Cocoon requiere algunas dependencias, principalmente relacionadas con jQuery. Aunque Cocoon aún no está completamente migrada a la nueva versión de Rails, se puede utilizar una versión específica desde un commit en GitHub.
-
Configurar Webpack: Modifica en tu archivo
application.json, ubicado enapp/javascript/packs/application.js, usandoimportpara incluir Cocoon. Configura jQuery y otras dependencias enenvironment.jsdentro de la carpetaconfig/webpack.const { environment } = require('@rails/webpacker'); const webpack = require('webpack'); environment.plugins.prepend('Provide', new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery', 'window.jQuery': 'jquery', Popper: ['popper.js', 'default'] })); module.exports = environment;
¿Cómo enlazamos participantes con tareas?
Una vez configurado Cocoon, es momento de enlazar nuestro modelo Participant al formulario de tareas mediante un formulario simple anidado.
-
Configuración del formulario: Dentro de la carpeta
app/views/tasks, ubica el formulario al que quieres asociar los participantes. -
Uso de Simple Fields Form: Este método del
SimpleFormpermite asociar un modelo anidado.= f.simple_fields_for :participants do |p| .participant-fields = render 'participant_fields', f: p -
Creación de un parcial: Este parcial alojará la configuración del modelo
Participant, y se denominará_participant_fields..nested-fields = f.input :user_id, collection: User.all - [current_user] = f.input :role
¿Cómo ajustamos el modelo Participant?
Es crucial configurar correctamente el modelo Participant para que la asociación y los roles se manejen adecuadamente.
-
Referencias y modelos: Asegúrate que el modelo
Participanttiene asociaciones establecidas apropiadamente con las tareas y usuarios. -
Rol de los participantes: Para determinar roles, el modelo
Participantpuede tener un atributo entero que especifique si un usuario es responsable o seguidor.def role_description case role when 1 'Responsable' when 2 'Seguidor' else 'Sin definir' end end -
Evitar que el CurrentUser aparezca en el listado: Utiliza operaciones con arrays para excluir al usuario actual de los selects.
Incorporar Cocoon para manejar formularios anidados en Rails es una habilidad crucial que simplifica el desarrollo al permitir asociaciones complejas entre modelos. Nunca dudes en explorar nuevas configuraciones y sigue practicando para dominar estas herramientas, con lo cual enriquecerás tus proyectos y habilidades.