2013-04-25 79 views
6

在一些Rails應用程序[選項]中的紅寶石,我在routes.rb中:通過=>:在軌道線路

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

我無法理解這兩個根URL可以是如何存在的看到這個。谷歌搜索也沒有幫助清除:選項論點。誰能幫忙?

感謝

回答

6

由於每HTTP spec(並解釋多一點here),有一個選項動詞 - 哪些路由支持。

使用OPTIONS的動力是請求Web服務API的文檔;結果旨在提供有關API如何使用的信息。

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

爲了回到你的問題,在典型的瀏覽器GET請求中,將使用第一條路由。當發出OPTIONS請求時,將使用第二條路線。

+0

非常感謝。這有幫助! – rookieRailer 2013-04-25 19:14:09

+0

通過http://guides.rubyonrails.org/routing.html#http-verb-constraints匹配任何http動詞:'匹配'照片'到':photos#show',通過:: all'的示例 – 2016-01-18 14:12:12

1

您可以使用:通過選項來約束請求到一個或多個HTTP方法

the rails guide on routing

:post:get:put:delete:options:head:any被允許作爲這個選項的值。

如在a blog post中所解釋的,OPTIONS是另一個支持CORS requests(一種製作跨域AJAX請求的方式)的HTTP動詞。

更新發現了一個博客文章,解釋:options

+0

感謝PinnyM。更新我的回答 – tessi 2013-04-25 19:14:25

+1

事實上,magic關鍵字不是':any',它的':all'。 '匹配'照片',以:'照片#顯示',通過:: all',來自http://guides.rubyonrails.org/routing.html#http-verb-constraints – 2016-01-18 14:10:23