Skip to content

Archives

  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021

Categories

  • No hay categorías
Trend RepositoryArticles and guides
Articles

Enrutamiento en Rails

On enero 18, 2022 by admin
  • ¿Qué es exactamente el enrutamiento?
  • ¿Cómo se hace el enrutamiento en Ruby on Rails?
  • Tipos de métodos de petición HTTP
  • Decodificación de la petición http
  • Definiendo recursos
  • Recursos singulares y múltiples
  • Recursos anidados
  • Estudio adicional

¿Qué es exactamente el enrutamiento?

Cuando hay una petición HTTP del usuario a la aplicación, debe ser dirigida al controlador correcto. Puedes imaginarte un enrutador como un recepcionista que te conecta con la persona adecuada para hablar.

¿Cómo se hace el enrutamiento en Ruby on Rails?

En Rails, las rutas de tu aplicación viven en config/routes.rb. El enrutador de Rails reconoce las URLs y las envía a la acción de un controlador. También puede generar rutas y URLs, evitando la necesidad de codificar cadenas en las vistas. Consideremos una aplicación para reservar habitaciones en diferentes hoteles y veamos cómo funciona.

Tipos de métodos de petición HTTP

La aplicación recibe una petición HTTP que lleva consigo un método que puede ser:

GET – Recuperar un recurso

POST – Crear un recurso

PUT – Actualizar completamente un recurso

PATCH – Actualizar parcialmente un recurso

DELETE – Eliminar un recurso

Estos métodos determinan qué método de acción del controlador se llama.

Decodificación de la petición http

Si la aplicación recibe la petición, GET /hotels/1. La petición es enviada a la acción show del controlador de hoteles con { id: '1' } en params.

get '/hotels/:id', to: 'hotels#show'

Similarmente,

get '/hotels', to: 'hotels#index'get '/hotels/:id', to: 'hotels#show'get '/hotels/new', to: 'hotels#new'post '/hotels', to: 'hotels#create'get '/hotels/:id/edit', to: 'hotels#edit'put '/hotels/:id', to: 'hotels#update'delete '/hotels/:id', to: 'hotels#destroy'

TIP: Si alguna vez quieres listar todas las rutas de tu aplicación puedes usar rails routes en tu terminal y si quieres listar las rutas de un recurso específico, puedes usar rails routes | grep hotel. Esto listará todas las rutas del Hotel.

Definiendo recursos

Al igual que la recepcionista tiene un registro de todas las reservas, la aplicación también tiene su propio registro en config/routes.rb.

Rails.application.routes.draw do resources :hotelsend

Escribiendo resources :hotels creamos las siete rutas diferentes en su aplicación, todas mapeadas al controlador de Hoteles como se ha mencionado anteriormente.

Si tu controlador tiene sólo algunas de estas acciones puedes alterar las mismas con las siguientes palabras clave.

La palabra clave sólo incluye sólo las acciones mencionadas.resources :hotels, only:

También está la palabra clave except para nombrar las que no quieres incluir.

resources :hotels, except:

Recursos singulares y múltiples

A veces tenemos un único recurso es decir, sólo tenemos que acceder a una única página en lugar de referenciar un id. Es entonces cuando utilizamos el término singular, recurso.

resource :hotels

Cuando tenemos que definir múltiples recursos,

resources :hotels, :rooms que funciona igual que

resources :hotels,resources :rooms

Recursos anidados

A veces tenemos rutas anidadas, /hotels/:id/rooms que son el resultado de recursos que son lógicamente hijos de otros recursos. Por ejemplo, supongamos que nuestra aplicación incluye estos modelos:

class Hotel < ApplicationRecord has_many :roomsendclass Room < ApplicationRecord belongs_to :hotelend

En cuyo caso declararemos nuestros recursos de esta manera,

resources :hotels do resources :roomsend

Esta declaración nos ayuda a acceder a las URLs anidadas como /hotels/:id/rooms , /hotels/:id/rooms/:id , /hotels/:id/rooms/new etc

Estudio adicional

Si quieres profundizar en el enrutamiento, puedes consultar Rails Routing from the outside en http://guides.rubyonrails.org/routing.html.

Foto de portada de Javier Allegue Barros en Unsplash (https://unsplash.com/photos/C7B-ExXpOIE)

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Archivos

  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021

Meta

  • Acceder
  • Feed de entradas
  • Feed de comentarios
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress