2013-04-25 6 views
6

W niektórych aplikacji Rails, widziałem to w routes.rb: via => [: opcje] w Ruby on Rails trasach

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

nie mogę zrozumieć, jak może istnieć te dwa adresy korzeniowe. Googling nie pomógł również usunąć argumentu: options. Czy ktoś może pomóc?

Dzięki

Odpowiedz

6

Jak na HTTP spec (i wyjaśnić nieco więcej here), istnieje czasownik OPCJE - które trasy może obsługiwać.

Impulsem do używania OPCJI jest żądanie dokumentacji interfejsu API serwisu WWW; wyniki mają na celu dostarczenie informacji dotyczących sposobu wykorzystania interfejsu API.

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

Aby wrócić do pytania, w typowym żądaniu GET przeglądarki zostanie użyta pierwsza trasa. Po zgłoszeniu żądania OPTIONS zostanie użyta druga trasa.

+0

Wielkie dzięki. To pomogło! – rookieRailer

+0

Przykład pasujący do dowolnego czasownika http: 'dopasuj 'zdjęcia', do: 'zdjęcia # pokaż', przez:: wszystkie', z http://guides.rubyonrails.org/routing.html#http-verb-constraints –

1

można użyć: poprzez opcję ograniczenia tego żądania do jednego lub większej liczby metod HTTP

Zobacz the rails guide on routing

:post, :get, :put, :delete, :options, :head, a :any są dozwolone jako wartość tej opcji.

Jak wyjaśniono w a blog post, OPCJE jest po prostu innym czasownikiem HTTP do obsługi CORS requests (sposób na żądanie AJAX w domenie krzyżowej).

Aktualizacja znaleźli blogu wyjaśniając :options

+0

dzięki PinnyM. zaktualizowałem moją odpowiedź – tessi

+1

W rzeczywistości magiczne słowo kluczowe nie jest ': any', its': all'. 'dopasuj 'zdjęcia', do: 'zdjęcia # pokaż', przez:: wszystkie, od http://guides.rubyonrails.org/routing.html#http-verb-constraints –