2010-06-08 2 views
11

Nelle guide 2 è possibile utilizzare: qualsiasi opzione per definire un percorso personalizzato che risponda a qualsiasi metodo di richiesta, ad es.: qualsiasi opzione per le rotaie 3 percorsi

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

rotaie 3 non sembra sostenere il: nessuna opzione

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

Qualcuno sa se questa opzione è stata rimossa o semplicemente rinominato?

risposta

12

Da scavare intorno e vedere che cosa i get, post, put, e delete azioni effettivamente fare in ActionDispatch, io credo tutto quello che dovete fare è match. Quindi:

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

Non credo che la sintassi per la partita è in realtà documentata, ma i percorsi sono costruisce, atleast per me, quello che vi aspettereste da un metodo all

+0

Inoltre, è possibile (apparentemente) specificare i metodi con: tramite specifica (: via => [: any,: get,: mettere,: post,: delete]); per quanto posso dire,: any non funziona (sembra stranamente nullo, anche se la tabella di routing mostrerà uno spazio vuoto invece di QUALSIASI), ma lasciandolo fuori: via equivale a: any. – Asher

+0

questo funziona per me – Anand

+0

Funziona anche per me. – Arun

0

Partita funzionerà, ma non all'interno di una definizione di risorse, purtroppo. Preferisco piuttosto che portino indietro un modo per definire get/post almeno insieme ..

+0

Hmm? Ha funzionato bene per me all'interno del blocco delle risorse. Usando Rails 3.0.0.beta4 –

+1

Aah - il mio problema era: on =>: membro. Stavo usando il mio nome risorsa (: on =>: item). Apparentemente il messaggio di errore non è molto buono .. "/Library/Ruby/Gems/1.8/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:738:in' ': impossibile definire il percorso direttamente nello scope delle risorse (ArgumentError) " – Kevin