Hola a todos,
Tengo una aplicación REST donde quiero consultar un recurso filtrado por
cada uno de sus diferentes atributos.
Asà que puedo tener las siguientes direcciones:
- Lista de bugs: /bugs
- El bug con id 1, y asà sucesivamente: /bugs/1
- Lista de valores de “loquesea”, donde “loquesea” puede ser cualquier
atributo del bug, como “state”: /bugs/by_loquesea - Lista de bugs donde el atributo “loquesea” tiene el valor “valor”:
/bugs/by_loquesea/valor
Las dos primeras direcciones las tengo funcionando (fácil). ¿Qué hago
con las otras? No sé qué poner en routes.rb ni qué hacer con mi
BugsController. Aquà algunas cosas que he pensado:
- No puedo usar recursos anidados( si lo anido deberÃa tener siempre al
menos el id de un bug, asÃ: /bugs/{id}/). - Empecé añadiendo un método llamado “by_state” en mi BugsController,
siendo “state” uno de los atributos de “bug”, pero me da error al
acceder a /bugs/by_state: “Couldn’t find Bug with ID=by_state”. Obvio. - Quizá deberÃa añadir un controlador nuevo. Algo como
BugsByController, que me permitirÃa crear direcciones como
/bugs_by/{loquesea}.
Pero de nuevo no sé cómo gestionar después la parte de la dirección de
{valor}. - Para resolver esto podrÃa poner un controlador por cada atributo, como
BugsByStateController, BugsBy…, pero suena fatal. - Con “collections” tampoco podrÃa. Puedo tener
map.resources :bugs, :collection => { :by_state=> :get, by_dir=> :get,
by_etc… }
Obteniendo asà las direcciones /bugs/by_state, /bugs/by_dir, etc… Pero
de nuevo no sé dónde poner después el {valor} del atributo.
Y la otra posibilidad es hacerlo con map.connect y apañar algo como
/bugs_by/:att/:value, pero no sé yo…
Cualquier sugerencia será bien recibida.