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

  1. Rutas y Controladores: Las rutas dirigen las solicitudes HTTP a las acciones del controlador.
  2. Rutas RESTful: Rails sigue el estándar REST para definir rutas.
  3. Rutas Personalizadas: Puedes definir rutas personalizadas para necesidades específicas.
  4. 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:

# config/routes.rb
Rails.application.routes.draw do
  get 'welcome/index'
end

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:

# config/routes.rb
Rails.application.routes.draw do
  resources :articles
end

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 recurso articles.

Rutas Personalizadas

Puedes definir rutas personalizadas para satisfacer necesidades específicas. Aquí tienes un ejemplo:

# config/routes.rb
Rails.application.routes.draw do
  get 'about', to: 'pages#about'
end

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ón about del controlador PagesController.

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 recurso articles.
  • resources :comments: Define rutas RESTful para el recurso comments anidadas dentro de articles.

Ejercicio Práctico

Ejercicio

  1. Define una ruta personalizada que dirija la URL /contact a la acción contact del controlador PagesController.
  2. 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 recurso products.

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.

© Copyright 2024. Todos los derechos reservados