0

我在默认路由中有以下两行

  match '/:controller/:action'
  match '/*path' , :to => 'map#catch_all'

所以问题是,当用户点击有效的控制器和无效的操作名称(如/user/aaaa)然后得到“未知操作”异常,因为路由被上述路由的第一行捕获。我也无法更改上述行的顺序。

有什么帮助吗??感谢所有评论。提前致谢。

4

1 回答 1

3

在生产中,您不应允许用户访问未明确允许的操作。您应该枚举所有可用的操作,或使用资源自动允许静止路径。这将解决您的问题。

此外,如果输入了不匹配的 url,则 404 消息将显示给用户,这是处理此问题的正确方法。

更新: 在您的 ApplicationController 中,您可以实现该method_missing(method, *args)方法,以处理可能来自通配符路由的所有不存在的操作调用。

def method_missing(method, *args)
  # handle Unknown Action
end

但请注意,这会捕获所有不存在的方法调用,这可能会导致调试问题,例如在拼写错误的情况下。

于 2012-07-02T14:16:22.633 回答