在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)))'
答案 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
答案 2 :(得分:2)
执行此操作的最佳方法是首先找到佣金路线的输出
$ rake routes
你会得到这样的东西:
[rails path] [verb] [url format] [controller#action]
所以例如:
user_show GET /show/:id public#show
您需要查看该操作。您应该使用get
或post
而不是match
- 就像这样:
get 'show/:id', :to => 'public#show'
答案 3 :(得分:0)
post ':controller(/:action(/:id(.:format)))'