2010-06-08 5 views
11

Dans les rails 2, vous pouvez utiliser l'option: any pour définir un itinéraire personnalisé qui répond à toute méthode de demande, par ex.: toute option pour les rails 3 routes

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

3 ne semble pas soutenir le: toute option

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

personne ne sait si cette option a été supprimée ou tout simplement renommé?

Répondre

12

de creuser autour et de voir ce que les get, post, put et delete actions font réellement dans ActionDispatch, je pense tout ce que vous devez faire est match. Alors:

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

Je ne pense pas que la syntaxe de correspondance est en réalité documentée, mais les routes qu'il construit sont, atleast pour moi, ce que vous attendez d'une méthode all

+0

De plus, vous pouvez (ostensiblement) spécifier des méthodes avec la spécification: via (via => [: any,: get,: mettre,: poster,: supprimer]); pour autant que je peux dire,: tout ne fonctionne pas (bizarrement il semble, bien que la table de routage montrera alors un blanc au lieu de tout), mais en laissant de côté: via équivaut à: tout. – Asher

+0

cela fonctionne pour moi – Anand

+0

Cela fonctionne pour moi aussi. – Arun

0

match va fonctionner, mais pas à l'intérieur d'une définition des ressources, malheureusement. Je souhaite plutôt qu'ils ramènent un moyen de définir get/post au moins ensemble ..

+0

Hmm? Cela a très bien fonctionné pour moi dans le bloc des ressources. Utilisation de Rails 3.0.0.beta4 –

+1

Aah - mon problème était: on =>: membre. J'utilisais mon nom de ressource (: on =>: item). Le message d'erreur n'est pas très bon apparemment. "/Library/Ruby/Gems/1.8/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:738:in' match ': impossible de définir l'itinéraire directement dans la ou les ressources (ArgumentError) " – Kevin

Questions connexes