rails 4中关于匹配关键字的路由问题在rails 3中工作

Kha*_*mad 9 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

在rails 3匹配关键字正在工作但在rails 4匹配关键字不适用于路由

如何在rails 4中定义这些路由

此代码段正在rails 3中运行

match 'admin', :to => 'access#menu'

match 'show/:id', :to => 'public#show'

match ':controller(/:action(/:id(.:format)))'
Run Code Online (Sandbox Code Playgroud)

我需要轨道4的通用公式,如轨道3

 match ':controller(/:action(/:id(.:format)))'
Run Code Online (Sandbox Code Playgroud)

Jon*_*der 13

Rails 4删除了泛型match,你现在必须指定你想要它响应的动词.通常,您将路线定义为:

get ':controller(/:action(/:id(.:format)))' => 'foo#matcher'
Run Code Online (Sandbox Code Playgroud)

如果你想让它使用match来获得多个动词,你可以这样做:

match ':controller(/:action(/:id(.:format)))' => 'foo#matcher', via: [:get, :post]
Run Code Online (Sandbox Code Playgroud)


小智 6

文档中说的是什么:

通常,您应该使用get,post,put和delete方法来约束到特定动词的路由.您可以将match方法与:via选项一起使用以匹配多个动词:

match 'photos', to: 'photos#show', via: [:get, :post] 
Run Code Online (Sandbox Code Playgroud)

您可以使用via :: all将所有动词匹配到特定路线:

match 'photos', to: 'photos#show', via: :all
Run Code Online (Sandbox Code Playgroud)

(文档)