El sistema de enrutamiento de Rails determina cómo las peticiones HTTP son respondidas por tu aplicación. Este sistema se define en el archivo config/routes.rb, donde mapeas URLs a controladores y acciones específicas.
Para una acción index en un controlador BooksController, podrías definir una ruta así:
get 'books/index', to: 'books#index'Esto significa que cuando un usuario visita http://tu_dominio.com/books/index, Rails enviará esa petición al método index en BooksController.
Rails proporciona una forma más conveniente de generar rutas para acciones comunes en tus controladores utilizando el método resources. Por ejemplo:
resources :booksEste único comando crea siete rutas diferentes en tu aplicación, cubriendo las acciones CRUD (Crear, Leer, Actualizar, Eliminar) típicas: index, show, new, create, edit, update, y destroy.
Las rutas anidadas te permiten expresar relaciones jerárquicas en tu aplicación. Por ejemplo, si cada book tiene muchos reviews, puedes definir rutas anidadas así:
resources :books do
resources :reviews
endEsto te permite construir URLs que reflejan la relación entre libros y reseñas, como books/:book_id/reviews/:id.
Para rutas que no se ajustan al patrón estándar RESTful o necesitas una URL específica, puedes definir rutas personalizadas:
get 'books/search', to: 'books#search'Las rutas pueden incluir parámetros, que se pasan a los controladores como parte de la petición. Por ejemplo:
get 'books/:id', to: 'books#show'En este caso, :id es un parámetro que permite a la ruta show del controlador Books mostrar el libro correspondiente al id proporcionado.
Rails también te permite definir redirecciones directamente en el archivo de rutas, lo cual es útil para mantener la organización de tus URLs o manejar URLs antiguas:
get 'old-books', to: redirect('books')Las rutas son una parte vital de cualquier aplicación Rails, proporcionando un mapeo flexible y potente entre las URLs de tu aplicación y su lógica de negocio. Aprovechar el sistema de enrutamiento de Rails te permite diseñar una experiencia de usuario clara y coherente.