Rails 3.1 - 在routes.rb中,使用通配符匹配'*'不捕获任何路由

时间:2012-04-30 08:46:53

标签: ruby-on-rails-3 exception-handling routing wildcard

在我的pages_controller.rb文件中,我有not_found个动作。我希望我的routes.rb文件中的条目与pages#not_found不匹配。想要利用通配符,我将其作为routes.rb文件的最后一行:

match '*' => 'pages#not_found'

我的基础是我在ruby指南中读到的关于通配符的内容(http://guides.rubyonrails.org/v3.1.0/routing.html)。但它不起作用。我没有前往pages#not_found,而是AcctionController::RoutingError (No route matches [GET] "*"(不幸的是,它被ActionDispatch捕获,所以我无法处理异常。)

疑难解答,我把它放在我的routes.rb文件中:

match 'foobar' => 'pages#not_found'

按预期在http://localhost:3000/foobar上执行了not_found操作。我尝试了部分外卡:

match 'foo*' => 'pages#not_found'

根据Rails指南,这应与http://localhost:3000/foobar匹配,但事实并非如此。为了让通配符在路由中工作,您需要做些什么特别的事情吗?我错过了什么?

1 个答案:

答案 0 :(得分:4)

也许试试这个:

match '*path' => 'pages#not_found'