我在默认路由中有以下两行
match '/:controller/:action'
match '/*path' , :to => 'map#catch_all'
所以问题是,当用户点击有效的控制器和无效的操作名称(如/user/aaaa)然后得到“未知操作”异常,因为路由被上述路由的第一行捕获。我也无法更改上述行的顺序。
有什么帮助吗??感谢所有评论。提前致谢。
我在默认路由中有以下两行
match '/:controller/:action'
match '/*path' , :to => 'map#catch_all'
所以问题是,当用户点击有效的控制器和无效的操作名称(如/user/aaaa)然后得到“未知操作”异常,因为路由被上述路由的第一行捕获。我也无法更改上述行的顺序。
有什么帮助吗??感谢所有评论。提前致谢。
在生产中,您不应允许用户访问未明确允许的操作。您应该枚举所有可用的操作,或使用资源自动允许静止路径。这将解决您的问题。
此外,如果输入了不匹配的 url,则 404 消息将显示给用户,这是处理此问题的正确方法。
更新:
在您的 ApplicationController 中,您可以实现该method_missing(method, *args)
方法,以处理可能来自通配符路由的所有不存在的操作调用。
def method_missing(method, *args)
# handle Unknown Action
end
但请注意,这会捕获所有不存在的方法调用,这可能会导致调试问题,例如在拼写错误的情况下。