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

时间:2013-11-01 07:54:38

标签: ruby-on-rails ruby 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)))'

我需要像rails 3中的rails 4的通用公式

 match ':controller(/:action(/:id(.:format)))'

4 个答案:

答案 0 :(得分:13)

Rails 4删除了通用match,您现在必须指定要让它响应的动词。通常,您将路线定义为:

get ':controller(/:action(/:id(.:format)))' => 'foo#matcher'

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

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

答案 1 :(得分:6)

文档中说了什么:

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

match 'photos', to: 'photos#show', via: [:get, :post] 

您可以使用via :: all:

将所有动词与特定路线匹配
match 'photos', to: 'photos#show', via: :all

(documentation)

答案 2 :(得分:2)

执行此操作的最佳方法是首先找到佣金路线的输出

$ rake routes
你会得到这样的东西:

[rails path] [verb] [url format] [controller#action]

所以例如:

user_show  GET  /show/:id  public#show     

您需要查看该操作。您应该使用getpost而不是match - 就像这样:

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

答案 3 :(得分:0)

post ':controller(/:action(/:id(.:format)))'