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