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