2010-06-08 21 views
11

En rieles 2 puede usar la: cualquier opción para definir una ruta personalizada que responda a cualquier método de solicitud, p.: cualquier opción para raíles 3 rutas

map.resources :items, :member => {:erase => :any} 

carriles 3 no parecen apoyar la: cualquier opción de

resources :items do 
    get :erase, :on => :member # works 
    any :erase, :on => :member # doesn't work 
end 

¿alguien sabe si esta opción se ha eliminado o simplemente cambiado de nombre?

Respuesta

12

De cavar alrededor y ver lo que los get, post, put y delete acciones realmente hacen en ActionDispatch, yo creo todo lo que tiene que hacer es match. Por lo tanto:

resources :items do 
    get :erase, :on => :member 
    match :erase, :on => :member 
end 

No creo que la sintaxis para el partido es en realidad documentada, pero las rutas que constructos son, al menos para mí, lo que cabría esperar de un método all

+0

Además, puede (ostensiblemente) especificar métodos con la especificación: via (: via => [: any,: get,: put,: post,: delete]); por lo que puedo decir,: cualquiera no funciona (extrañamente nil parece, aunque la tabla de enrutamiento mostrará un espacio en blanco en lugar de CUALQUIER), pero omitiendo: vía equivale a: cualquiera. – Asher

+0

esto funciona para mí – Anand

+0

Funciona para mí también. – Arun

0

Partido va a funcionar, pero no dentro de una definición de recursos desafortunadamente. Prefiero que traigan una forma de definir get/post al menos juntos ..

+0

Hmm? Funcionó muy bien para mí dentro del bloque de recursos. Usando Rails 3.0.0.beta4 –

+1

Aah - mi problema era: on =>: member. Estaba usando mi nombre de recurso (: on =>: item). El mensaje de error no es muy bueno al parecer .. "/Library/Ruby/Gems/1.8/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:738:in' match ': no ​​se puede definir la ruta directamente en el alcance de los recursos (ArgumentError) " – Kevin

Cuestiones relacionadas