Inicié recientemente un proyecto de Rails y decidí usar controladores RESTful. Creé controladores para mis entidades clave (como Country) y agregué index
, new
, edit
, create
, show
, update
y delete
. Agregué mi map.resources :country
a mi archivo de rutas y la vida fue buena.¿Por qué tengo que trabajar más para hacer que mi aplicación Rails se ajuste a una arquitectura RESTful?
Después de que el desarrollo progresó un poco, empecé a tener problemas. A veces necesitaba acciones adicionales en mi controlador. Primero fue la acción search
que devolvió las opciones para mi elegante cuadro de búsqueda de autocompletado. Luego vino la necesidad de mostrar los países de dos maneras diferentes en diferentes lugares de la aplicación (los datos mostrados también eran diferentes, por lo que no eran solo dos vistas) - Agregué la acción index_full
. Luego, quería mostrar un país por nombre en la URL, no por identificación, así que agregué la acción show_by_name
.
¿Qué haces cuando se necesita acciones más allá de la norma index
, new
, edit
, create
, show
, update
, delete
en un controlador de REST en Rails? ¿Debo agregar (y mantener) las rutas manuales en el archivo routes.rb (que es un problema), van en un controlador diferente, me vuelvo inseguro o me falta algo fundamental?
Supongo que estoy preguntando, ¿tengo que trabajar más y agregar acciones en mi archivo routes.rb por el privilegio de ser RESTful? Si no estuviera usando map.resources
para agregar los objetos de REST, las rutas estándar :controller/:action, :controller/:action/:id
manejarían prácticamente todo automáticamente.
Parece haber mucha confusión sobre el significado de REST debido a los métodos predeterminados de los rieles. REST no se limita a esos métodos, y realmente no se trata de esos métodos en particular. Tampoco entiendo por qué sientes que tienes que trabajar más duro al agregar métodos adicionales a un controlador. – jshen