未知操作异常:Rails 3.1中的路由错误

时间:2012-07-02 14:11:43

标签: ruby-on-rails ruby-on-rails-3 exception ruby-on-rails-3.1 routes

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

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

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

任何帮助? 所有评论都表示赞赏。在此先感谢。

1 个答案:

答案 0 :(得分:3)

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

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

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

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

但要注意,这会捕获所有不存在的方法调用,这会导致调试问题,例如在输入错误的情况下。