2013-04-25 13 views
6

In qualche applicazione Rails, ho visto questo nel routes.rb: via => [:] opzioni in Ruby on Rails itinerari

root :to => "home#index", :via => [:get] 
root :to => "accounts#manage", :via => [:options] 

non riuscivo a capire come possano esistere questi due URL radice. Googling non ha aiutato a chiarire l'argomento: options neanche. Qualcuno può aiutare?

Grazie

risposta

6

Come per la HTTP spec (e ha spiegato un po 'più here), v'è un verbo OPZIONI - quali percorsi possono sostenere.

L'impulso per l'utilizzo di OPTIONS è richiedere la documentazione per un'API del servizio Web; i risultati hanno lo scopo di fornire informazioni su come l'API può essere utilizzata.

ActionDispatch::Routing::HTTP_METHODS 
=> [:get, :head, :post, :put, :delete, :options] 

Per tornare alla domanda, in una tipica richiesta GET del browser, verrà utilizzato il primo percorso. Quando viene effettuata una richiesta OPZIONI, verrà utilizzata la seconda rotta.

+0

Grazie mille. Questo ha aiutato! – rookieRailer

+0

Esempio che corrisponde a qualsiasi verbo http: 'match 'foto', a: 'photos # show', tramite:: all', da http://guides.rubyonrails.org/routing.html#http-verb-constraints –

1

È possibile utilizzare l': via opzione per limitare la richiesta di uno o più metodi HTTP

Vedi the rails guide on routing

:post, :get, :put, :delete, :options, :head e :any sono ammessi come valore a questa opzione.

Come spiegato in a blog post, OPTIONS è solo un altro verbo HTTP per supportare CORS requests (un modo per effettuare richieste AJAX su più domini).

Aggiornamento trovato un post che spiega :options

+0

grazie PinnyM. aggiornata la mia risposta – tessi

+1

Infatti la parola chiave magic non è ': any', è': all'. 'confronta 'foto', a: 'foto # mostra', tramite:: all', da http://guides.rubyonrails.org/routing.html#http-verb-constraints –