Ruby on rails 将轨道2铺设至轨道4“;“地图连接”;

Ruby on rails 将轨道2铺设至轨道4“;“地图连接”;,ruby-on-rails,routes,migrate,Ruby On Rails,Routes,Migrate,我在Rails2.3.14中有这条路线,我想将其转换为Rails4.0.3 map.connect':控制器/:操作/:id' map.connect':控制器/:操作/:id:格式' 我尝试使用match,但给出了错误 好的,这样做 match ':controller/:action/:id', via: [:get, :post] 如果可能的话,考虑重构你的路由文件,而不要使用一个catch文件。在大多数情况下,您将了解用户在您的站点上可能执行的所有操作,并且您应该仅限于此 通过添加一

我在Rails2.3.14中有这条路线,我想将其转换为Rails4.0.3

map.connect':控制器/:操作/:id' map.connect':控制器/:操作/:id:格式' 我尝试使用match,但给出了错误

好的,这样做

 match ':controller/:action/:id', via: [:get, :post]

如果可能的话,考虑重构你的路由文件,而不要使用一个catch文件。在大多数情况下,您将了解用户在您的站点上可能执行的所有操作,并且您应该仅限于此

通过添加一个catch-all,您可以通过get访问每个操作,这可能很危险。有关这方面的详细讨论,请访问


如果您仍然想这样做并了解风险,那么请参阅@ParitoshPiplewar的答案

您尝试了什么以及错误是什么?匹配:controller/:action/:id'match':controller/:action/:id.:format'gems/actionpack-4.0.3/lib/action\u dispatch/routing/mapper.rb:191:in
规范化条件!':如果未指定HTTP方法,则不应在路由器中使用
match`方法。(RuntimeError)如果要将操作同时公开给GET和POST,请通过:[:GET,:POST]选项添加
。如果你想暴露你的行为,在路由器中使用<代码>获取< /代码>:而不是:匹配“Controller行动”:得到“控制器-动作”。如果可能的话,这是令人沮丧的,请考虑重新组织你的路由文件,这样你就可以单独指定路由而不是依赖于这个模式。它可以让你做一个动作后的动作,反之亦然。是的,我知道。我猜这个评论属于提问者。我回答了他问的问题。我知道这是一种不好的做法。谢谢你的回答和建议,我会考虑。@ParitoshPiplewar我同意这可能属于OP,但是如果把它贴在接受的答案旁边,意味着更多考虑这种方法的人会阅读它