Problema con route

Hola, he creado un proyecto basico, dónde introduzco usuarios en una bd.
Resulta que he intentado hacer un metodo en el controlador usuarios
llamado
def index_by_date en el cual devuelvo un listado de usuarios pero
ordendo de
otra forma. El problema viene que siempre me dice que
*ActiveRecord::RecordNotFound
in UsuarisController#show
Couldn’t find Usuari with ID=index_by_date.

*Según lo que entiendo el problema viene por las prioridades, es decir,
siempre me coje el método show. He probado de poner en router.db la
linea map.resources
:usuarios
en última posición y en este caso si que funciona ok peró no
funciona nada de show.

Qué puedo hacer?

PD: Se que parece una tontería pero he miado en varios posts de routes
pero
no lo consigo.

gracias.

Mirate el fichero de rutas porque allí está bastante bien explicado.

Francesc

Alex, ¿puedes pegar tu routes.rb en algún sitio como pastie?
http://pastie.caboo.se/
Seguramente así sea más fácil localizar el problema :wink:

Lo estoy mirando pero no encuentro como hacerlo.

2008/5/21 Raul M. [email protected]:

¿El controlador se llama Usuaris?

¿Puedes pegar el código del controlador?

lo he pegado aki.

http://pastie.caboo.se/200752

2008/5/21 Javier Vidal P. [email protected]:

aquí he pegado el routes.db

http://pastie.caboo.se/200751

2008/5/21 Alex L. [email protected]:

En el mismo fichero de rutas “explica” como definir acciones extras.
map.resources :products, :member => { :short => :get, :toggle
=> :post }, :collection => { :sold => :get }
Deberias hacer algo como:

map.resources :usuaris, :collection => { :index_by_date => :get }

Un saludo,

Francesc

Si, con eso funciona!! Era solo una prueba. Lo suyo seria hacer un
metodo
ordenar, que con elprimer parametro le pusiera el campo por el que
ordenadar, y el segundo si asc o desc.

El metodo como seria? algo diferente no?

gracias.

2008/5/21 Raul M. [email protected]:

Con la línea

map.resources :usuaris

estás definiendo las acciones básicas de REST (show, new, create…)
para ese controlador.

Ninguna de ellas corresponde a la acción index_by_date que quieres
ejecutar. Para añadirla al conjunto de acciones en las rutas de ese
controlador yo haría esto:

map.resources :usuaris, :collection => {:index_by_date => :get }

Te recomiendo que leas la doc. sobre rutas y REST para entender bien
todo este tema.

Saludos Llao, yo lo hice así y me funcionó bien:

En routes.rb coloqué la siguiente línea:
map.connect ‘ordenar_por_fecha’, :controller => ‘usuaris’, :action
=> ‘index_by_date’

Ahora puedo verlo con el siguiente URL:

http://localhost:3000/ordenar_por_fecha

Si quiero colocar un link en otra página pongo lo siguiente:

Ordenar Por Fecha

Espero que te funcione esta solución.

Alex L. wrote:

Hola, tengo otro problema con route.

map.resources :usuaris, :collection => {:index_by_date => :get}

tengo esta ruta

por ejemplo si tengo un metodo llamado aux pues al dejar la ruta asi no
funcionan los dos. Como se puede hacer?

map.resources :usuaris, :collection => {:index_by_date => :get},
:collection=> {:aux =>:get }

gracias.

2008/5/21 Francesc E. [email protected]:

Hola, tengo otro problema con route.

map.resources :usuaris, :collection => {:index_by_date => :get}

tengo esta ruta

por ejemplo si tengo un metodo llamado aux pues al dejar la ruta asi no
funcionan los dos. Como se puede hacer?

map.resources :usuaris, :collection => {:index_by_date => :get},
:collection=> {:aux =>:get }

gracias.

2008/5/21 Francesc E. [email protected]:

prueba con:
map.resources :usuaris, :collection => {:index_by_date => :get, :aux
=> :get}
que así debería funcionar.
saludos.
El jue, 22-05-2008 a las 01:04 +0200, Alex L. escribió:

tnks voy a probar!

2008/5/22 fernando.martinezgil [email protected]:

Hola,

Antes de nada gracias por contestar.

OK, esta claro ese metodo, es decir, si kisiera mas metodos por ejemplo,

http://localhost:3000/usuarios/ordenar/fecha/asc

ÑPor ejemplo para ejcutar algo parecido a esto, como lo harías?

gracias.

2008/5/22 Jose Rafael C. [email protected]:

hola chicos aprovecho este tema que han sacado donde hablan de member y
collection porque hace un par de dias lei sore esto pero no me quedo muy
claro cuando usar member o cuando usar collection.

se que ambas son para añadir una nueva accion que no pertenece a las
acciones crub basicas

se que collection es necesaria cuando en lugar de sobre un unico
recurso la accion sea realizada sobre una colleccion, pero no entiendo
bien esta explicacion

por ejemplo en el ejemplo que pone ale

map.resources :usuaris, :collection => {:index_by_date => :get}

no podria poner
map.resources :usuaris, :member => {:index_by_date => :get}

muchas gracias y salu2

Como tú misma dices, depende de si la acción trabaja sobre un recurso
o sobre toda la
colección.
Si en el ejemplo que comentas la intención de esa
acción"index_by_date" es mostrar un listado en orden cronológico de los
recursos contenidos en toda la colección parece lógico usar
:collection.