2010-06-08 115 views
11

在軌道2中,您可以使用:any選項來定義響應任何請求方法的自定義路線,例如,:軌道3路線的任何選項

map.resources :items, :member => {:erase => :any} 

軌道3似乎並不支持:任何選項

resources :items do 
    get :erase, :on => :member # works 
    any :erase, :on => :member # doesn't work 
end 

沒有人,如果此選項已被刪除或改名只是知道嗎?

回答

12

從周圍挖,看到什麼getpostputdelete行動ActionDispatch實際上做,我覺得所有你需要做的是match。所以:

resources :items do 
    get :erase, :on => :member 
    match :erase, :on => :member 
end 

我不認爲語法比賽實際上是記錄,但它路由結構是,至少對我來說,你會從all方法會發生什麼

+0

此外,你可以(表面上)用:via規範(:via => [:any,:get,: put,:post,:delete]);據我所知,任何操作都不起作用(奇怪的是,似乎沒有,儘管路由表將顯示一個空白而不是ANY),但忽略了:通過等同於:any。 – Asher 2010-07-30 08:04:22

+0

這適用於我 – Anand 2010-12-24 07:13:40

+0

它也適用於我。 – Arun 2012-08-01 11:16:09

0

賽會工作,但不幸的是不在資源定義內。我希望他們會帶回一種方式來定義get/post至少在一起..

+0

嗯?它在資源塊內對我來說工作得很好。使用Rails 3.0.0.beta4 – 2010-07-08 01:52:27

+1

啊 - 我的問題是:on =>:member。我正在使用我的資源名稱(:on =>:item)。 錯誤信息顯然不是很好.. 「/Library/Ruby/Gems/1.8/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:738:in'match ':不能直接在資源範圍(ArgumentError)中定義路由「 – Kevin 2010-07-09 00:36:46