Rails routes diferencia entre recurso y recursos

Rails proporciona enrutamiento RESTful para los recursos.Las rutas pueden definir un solo recurso o recursos plurales para generar rutas de la aplicación.

Hay una diferencia lógica que debe ser considerada al seleccionar resource o resources al generar las rutas.

Uso de recursos en las rutas de Rails

Veamos las rutas generadas cuando usamos resources en las rutas de Rails.

resources :products
VerboHTTP Ruta Controlador#Acción Utilizado para
GET /products products#index mostrar una lista de todos los productos
GET productos/nuevos productos#nuevos devolver un formulario HTML para crear un nuevo producto
POST productos productos#crear crear un nuevo producto
GET productos/:id productos#mostrar mostrar un producto específico
BUSCAR productos/:id/editar productos#editar devolver un formulario HTML para editar un producto
PATCH/PUT productos/:id productos#actualizar actualizar un producto específico
Borrar productos/:id productos#destruir eliminar un producto específico

Uso del recurso en las rutas Rails

Tomemos un ejemplo de usuario profile para un usuario que ha iniciado sesión en el sitio web utilizando la aplicación Rails.El perfil del usuario se supone que es una entidad (recurso) que se trabaja cuando el usuario está conectado.No queremos que el usuario final conozca el perfil ID del usuario.Por lo tanto,

  • Para ver el perfil, la ruta debe ser algo como www.example.com/profile
  • Para editar el perfil, la ruta debe ser algo como www.example.com/profile/edit

etc.

Podemos definir las rutas para el recurso profile como se indica a continuación.

resource :profile
VerboHTTP Ruta Controlador#Acción Se utiliza para
GET /perfil/nuevo perfiles#nuevo devolver un HTML para crear un nuevo perfil
POST perfiles profiles#create crear un nuevo perfil
GET profile profiles#show mostrar un perfil específico
GET /profile/edit profiles#edit devolver un formulario HTML para editar un perfil
PATCH/PUT /profile profiles#update actualizar un perfil específico
DELETE perfil profiles#destroy borrar un perfil específico

Podemos ver que las rutas de recursos singulares no tienen ID del recurso.Además, sigue dirigiendo las peticiones al nombre del controlador pluralizado.

Las guías de Rails sugieren:,

A veces, tienes un recurso que los clientes siempre buscan sin hacer referencia a un ID. Por ejemplo, queremos que /profile muestre siempre el perfil del usuario que ha iniciado la sesión. En este caso, puede utilizar un recurso singular.

Diferencia entre recurso y recursos