2013-04-25 6 views
6

In einiger Rails-Anwendung, sah ich dies in dem routes.rb: via => [: Optionen] in Ruby on Rails Routen

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

ich nicht verstehen konnte, wie diese beiden Wurzeln URLs existieren kann. Googling hat auch nicht geholfen, das Argument: options zu löschen. Kann jemand helfen?

Dank

Antwort

6

Gemäß der HTTP spec (und erklärt etwas here), gibt es ein Verb OPTIONS - die Routen unterstützen können.

Der Grund für die Verwendung von OPTIONS ist die Anforderung von Dokumentation für eine Web-Service-API; Die Ergebnisse sollen Informationen darüber liefern, wie die API verwendet werden kann.

Um zu Ihrer Frage zurückzukehren, wird in einer typischen GET-Anfrage des Browsers die erste Route verwendet. Wenn eine OPTIONS-Anfrage gestellt wird, wird die zweite Route verwendet.

+0

Vielen Dank. Das hat geholfen! – rookieRailer

+0

Beispiel, das mit einem beliebigen http-Verb übereinstimmt: 'match 'photos', an: 'photos # show', über:: all', von http://guides.rubyonrails.org/routing.html#http-verb-constraints –

1

Sie die verwenden können: über die Option die Anforderung an einen oder mehrere HTTP-Methoden

Siehe the rails guide on routing

:post, :get, :put, :delete, :options, :head und :any zu beschränken sind als Wert für diese Option zulässig.

Wie in a blog post erklärt, ist OPTIONS nur ein weiteres HTTP-Verb, das CORS requests unterstützt (eine Möglichkeit, domainübergreifende AJAX-Anfragen zu stellen).

aktualisieren einen Blogeintrag gefunden erklärt :options

+0

danke PinnyM. aktualisiert meine Antwort – tessi

+1

In der Tat ist das magische Schlüsselwort nicht ': any', sein': all'. 'match 'photos', zu: 'photos # show', via:: all', von http://guides.rubyonrails.org/routing.html#http-verb-constraints –