El enrutamiento en Ruby on Rails es un componente esencial que conecta las solicitudes HTTP entrantes con las acciones del controlador. En esta sección, aprenderás cómo definir rutas en una aplicación Rails, cómo funcionan las rutas RESTful y cómo personalizar rutas para satisfacer las necesidades de tu aplicación.
Conceptos Clave
- Rutas y Controladores: Las rutas dirigen las solicitudes HTTP a las acciones del controlador.
- Rutas RESTful: Rails sigue el estándar REST para definir rutas.
- Rutas Personalizadas: Puedes definir rutas personalizadas para necesidades específicas.
- Recursos Anidados: Permiten definir rutas para recursos que están relacionados jerárquicamente.
Definiendo Rutas Básicas
Las rutas en Rails se definen en el archivo config/routes.rb
. Aquí tienes un ejemplo básico de cómo definir una ruta:
En este ejemplo, la ruta get 'welcome/index'
dirige una solicitud GET a la acción index
del controlador WelcomeController
.
Explicación del Código
Rails.application.routes.draw do
: Inicia el bloque de definición de rutas.get 'welcome/index'
: Define una ruta que responde a solicitudes GET en la URL/welcome/index
.
Rutas RESTful
Rails facilita la creación de rutas RESTful para recursos. Aquí tienes un ejemplo de cómo definir rutas RESTful para un recurso llamado articles
:
Esto genera automáticamente las siguientes rutas:
HTTP Verbo | Ruta | Acción | Propósito |
---|---|---|---|
GET | /articles | index | Mostrar todos los artículos |
GET | /articles/new | new | Mostrar formulario para nuevo artículo |
POST | /articles | create | Crear un nuevo artículo |
GET | /articles/:id | show | Mostrar un artículo específico |
GET | /articles/:id/edit | edit | Mostrar formulario para editar artículo |
PATCH/PUT | /articles/:id | update | Actualizar un artículo |
DELETE | /articles/:id | destroy | Eliminar un artículo |
Explicación del Código
resources :articles
: Define rutas RESTful para el recursoarticles
.
Rutas Personalizadas
Puedes definir rutas personalizadas para satisfacer necesidades específicas. Aquí tienes un ejemplo:
En este ejemplo, la ruta get 'about'
dirige una solicitud GET a la acción about
del controlador PagesController
.
Explicación del Código
get 'about'
: Define una ruta que responde a solicitudes GET en la URL/about
.to: 'pages#about'
: Especifica que la solicitud debe ser manejada por la acciónabout
del controladorPagesController
.
Recursos Anidados
Los recursos anidados permiten definir rutas para recursos que están relacionados jerárquicamente. Aquí tienes un ejemplo:
# config/routes.rb Rails.application.routes.draw do resources :articles do resources :comments end end
Esto genera rutas para comments
que están anidadas dentro de articles
.
Explicación del Código
resources :articles do
: Define rutas RESTful para el recursoarticles
.resources :comments
: Define rutas RESTful para el recursocomments
anidadas dentro dearticles
.
Ejercicio Práctico
Ejercicio
- Define una ruta personalizada que dirija la URL
/contact
a la accióncontact
del controladorPagesController
. - Define rutas RESTful para un recurso llamado
products
.
Solución
# config/routes.rb Rails.application.routes.draw do get 'contact', to: 'pages#contact' resources :products end
Explicación de la Solución
get 'contact', to: 'pages#contact'
: Define una ruta personalizada para la URL/contact
.resources :products
: Define rutas RESTful para el recursoproducts
.
Resumen
En esta sección, has aprendido cómo definir rutas en una aplicación Rails, incluyendo rutas básicas, rutas RESTful, rutas personalizadas y recursos anidados. El enrutamiento es una parte fundamental de cualquier aplicación web, y dominarlo te permitirá crear aplicaciones Rails más robustas y organizadas.
En la próxima sección, exploraremos cómo realizar pruebas en Ruby, comenzando con una introducción a las pruebas y su importancia en el desarrollo de software.
Curso de Programación en Ruby
Módulo 1: Introducción a Ruby
Módulo 2: Conceptos Básicos de Ruby
Módulo 3: Trabajando con Colecciones
Módulo 4: Programación Orientada a Objetos en Ruby
- Clases y Objetos
- Variables y Métodos de Instancia
- Variables y Métodos de Clase
- Herencia
- Módulos y Mixins
Módulo 5: Conceptos Avanzados de Ruby
- Bloques, Procs y Lambdas
- Metaprogramación
- Manejo de Excepciones
- Entrada/Salida de Archivos
- Expresiones Regulares
Módulo 6: Introducción a Ruby on Rails
- ¿Qué es Ruby on Rails?
- Configuración del Entorno Rails
- Creando una Aplicación Simple en Rails
- Arquitectura MVC
- Enrutamiento
Módulo 7: Pruebas en Ruby
- Introducción a las Pruebas
- Pruebas Unitarias con Minitest
- Desarrollo Guiado por Comportamiento con RSpec
- Mocking y Stubbing
Módulo 8: Mejores Prácticas en Ruby
- Estilo de Código y Convenciones
- Refactorización
- Optimización del Rendimiento
- Mejores Prácticas de Seguridad