问题 :rails 3路由的任何选项


在rails 2中,您可以使用:any选项来定义响应任何请求方法的自定义路由,例如:

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

rails 3似乎不支持:任何选项

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

有没有人知道这个选项是否已被删除或只是重命名?


6514
2018-06-08 16:23


起源



答案:


从挖掘和看到什么 getpostput,和 delete 行动实际上是做的 ActionDispatch, 一世 认为 你需要做的就是 match。所以:

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

我不认为匹配的语法实际上是记录在案的,但它构造的路由对我来说至少是你期望的 all 方法


12
2018-06-25 19:26



另外,您可以(表面上)使用:via specification(:via => [:any,:get,:put,:post,:delete])指定方法;据我所知,:任何不起作用(奇怪的是nil似乎,虽然路由表将显示空白而不是ANY),但遗漏:via等于:any。 - Asher
这对我有用 - Anand
它对我也有用。 - Arun


答案:


从挖掘和看到什么 getpostput,和 delete 行动实际上是做的 ActionDispatch, 一世 认为 你需要做的就是 match。所以:

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

我不认为匹配的语法实际上是记录在案的,但它构造的路由对我来说至少是你期望的 all 方法


12
2018-06-25 19:26



另外,您可以(表面上)使用:via specification(:via => [:any,:get,:put,:post,:delete])指定方法;据我所知,:任何不起作用(奇怪的是nil似乎,虽然路由表将显示空白而不是ANY),但遗漏:via等于:any。 - Asher
这对我有用 - Anand
它对我也有用。 - Arun


好问题。

看着 Edge Rails路由指南 和 Rails 3来源 它看起来不像是支持的。你可以在里面加票 Rails灯塔 (我找不到现有的)。


0
2018-06-08 19:46





匹配将起作用,但不幸的是不在资源定义内。我宁愿希望他们带回一种方法来定义get / post至少一起..


0
2017-07-07 23:44



嗯?它在资源块中对我来说很好用。使用Rails 3.0.0.beta4 - Jamie Wong
啊 - 我的问题是:on =>:member。我正在使用我的资源名称(:on =>:item)。错误消息显然不是很好..“/ Library / Ruby / Gems / 1.8 / gems / actionpack3.0.0.beta4 / lib / action_dispatch / rrouting / mapper.rb:738:in`match':can' t直接在资源范围内定义路由(ArgumentError)“ - Kevin