2010-05-25 23 views
3

我知道這不是RESTful,但現在,我試圖建立一個api/v1控制器。理想情況下,我想這樣稱呼它:使用命名空間和格式的路由(對於api)

site.com/api/v1/verify.xml 

但是現在我無法讓.xml工作。我有以下航線至今:

map.namespace :api do |api| 
    api.connect ':controller/:action/:id' 
end 

我能做到/api/v1/verify但使用上面的路線,我不認爲。由於某種原因,即使它顯示了正確的頁面,它仍然會觸發我所有的路線。

map.connect '*path', :controller => 'application', :action => 'redirect_main' 

所以:
1)我如何才能在那裏.format
2)我該如何讓它不會擊中我所有的路線?

+0

你不必爲「v1」命名空間,或者是「v1」你的控制器嗎? – mcr 2011-08-11 16:35:45

+0

v1是控制器。再次,不是最乾淨的方式來做到這一點。 – RyanJM 2011-08-11 18:29:11

回答

4

1)我怎麼在那裏.format?

api.connect ':controller/:action/:id.:format' 

2),如何讓它不打我的 包羅萬象的路線?

我相信你的全路徑應該是routes.rb上的最後一條。這樣它應該工作...

1

如果您不使用命名的路由或資源,則必須指定要處理的每個路徑組合,包括文件擴展名。

添加api.connect ':controller/:action/:id.:format'回你api命名空間會給你訪問params[:format]迴應。

+0

'map.connect'或'api.connect'? – Jeriko 2010-05-25 14:55:42

+0

是啊,api.connect – Samuel 2010-05-25 15:05:01

1

難道你只需要添加.:format

map.namespace :api do |api| 
    api.connect ':controller/:action/:id.:format' 
end