Contenido del curso
Comenzando con Sails
Setup de Espacio de Trabajo
CRUD
- 10

Entendiendo operaciones CRUD
05:09 min - 11

Crear modelo de rodada
07:43 min - 12

Crear app de Ionic
11:41 min - 13

Obtener todas las Rodadas: preparando la aplicación para mostrar datos
14:51 min - 14

Obtener todas las Rodadas: mostrando los datos
14:25 min - 15

Crear Rodada: recibiendo parámetros desde la URL
12:28 min - 16

Crear Rodada: enviando información desde el formulario
12:41 min - 17

Actualizar Rodada
12:16 min - 18

Eliminar Rodadas
Viendo ahora
Autenticación y Usuarios
Sistemas Externos
- 26

Uso de JSON Web Token
10:22 min - 27

Policies: verificar si usuario está loggeado
11:53 min - 28

Agregar usuario a Ride
09:47 min - 29

Preparando la App para implementar el Login y Sign up
11:01 min - 30

Implementando Login
15:04 min - 31

Implementando Sign up
09:35 min - 32

Agregar puntos de Rodada
15:20 min - 33

Obtener API Keys para Clima y Distancias
00:56 min - 34

Integración Google Geocoding: definiendo la lógica
14:56 min - 35

Integración Google Geocoding: probando la funcionalidad
06:14 min - 36

Integración Weather API
13:04 min - 37

Desplegar clima, distancia y tiempo en cada punto de Rodada
06:08 min
Cierre
Eliminar Rodadas
Resumen
Cuando una aplicación permite crear y editar registros, el siguiente paso natural es implementar la opción de eliminar. En el contexto de una app de rodadas ciclistas, cancelar un evento es una acción crítica e irreversible que requiere tanto una implementación técnica sólida como una comunicación clara al usuario.
¿Cómo se agrega el botón de eliminar en la vista?
El punto de partida es el archivo rides.page.html, donde ya existe un botón de editar. A partir de ese botón se crea uno nuevo con las siguientes modificaciones [01:00]:
- El texto cambia de "editar" a "eliminar".
- El ícono se reemplaza por
trash, que representa visualmente la acción de borrar. - Se le asigna el color
danger(rojo) para advertir que la acción es irreversible. - En lugar de usar
routerLink, se utiliza un evento de clic que llama al métododeletepasándole elride.id.
Este cambio de routerLink a un evento de clic es importante porque no se necesita redirigir a otra página; la eliminación ocurre directamente desde la lista.
¿Qué diferencia hay entre la petición DELETE y PUT en la API?
Si observamos la API desde Postman, la petición DELETE es muy similar a la de PUT: solo necesita recibir el ID del elemento que se quiere eliminar [01:30]. No se envía un cuerpo con datos adicionales, únicamente el identificador del registro.
¿Cómo se implementa el método delete en el servicio?
Dentro del archivo services/ride.ts, se toma como base el método update, se copia y se realizan estos ajustes [02:05]:
- Se renombra a
delete. - En lugar de recibir un objeto
ridecompleto, recibe únicamente el ID. - Se cambia el verbo HTTP de
putadelete. - Se pasa un solo parámetro: el ID del recurso a eliminar.
typescript
delete(id: number) {
return this.http.delete(${this.apiUrl}/${id});
}
Este patrón sigue la convención RESTful donde el método HTTP DELETE combinado con el identificador en la URL es suficiente para indicar qué recurso debe eliminarse.
¿Por qué es crítico notificar al usuario sobre el resultado?
De vuelta en rides.page.ts, el método delete llama a this.rideService.delete(id) y se suscribe al observable para manejar dos escenarios [02:40]:
- Éxito: se muestra un
alertcon el mensaje "eliminado con éxito" y se ejecutathis.getRides()para refrescar la lista automáticamente. - Error: se muestra una alerta indicando "no se pudo eliminar la rodada" y se registra el error en
console.logpara que el desarrollador pueda diagnosticar el problema.
typescript delete(id: number) { this.rideService.delete(id).subscribe( (data) => { alert('Eliminado con éxito'); this.getRides(); }, (error) => { alert('No se pudo eliminar la rodada'); console.log(error); } ); }
La notificación al usuario es fundamental en este tipo de operaciones. Si la eliminación falla silenciosamente y el usuario cree que se canceló la rodada, los participantes podrían llegar al punto de encuentro sin líder o sin organización [03:10]. Este es un ejemplo real de por qué el manejo de errores no es opcional.
¿Cómo se refleja la eliminación en la interfaz?
Al llamar a this.getRides() después de una eliminación exitosa, la lista se actualiza inmediatamente. En la demostración, la rodada "viaje a Alaska2" desaparece de la vista al instante, pasando de cuatro elementos a tres sin necesidad de recargar la página [03:45].
¿Qué mejora de seguridad se puede agregar como reto?
Un paso adicional recomendado es implementar un modal de confirmación antes de ejecutar la eliminación [04:10]. Este componente actúa como un candado de seguridad:
- Si el usuario confirma, se procede con el
delete. - Si el usuario cancela, no ocurre ninguna acción.
Este patrón de confirmación es una buena práctica de UX (user experience) en cualquier operación destructiva, ya que protege contra clics accidentales y refuerza la conciencia de que la acción no tiene vuelta atrás.
¿Ya implementaste el modal de confirmación? Comparte tu solución y cuéntanos qué enfoque utilizaste.