2010-06-08 75 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