Same Rails 4 routes pour les requêtes GET et POST

Dans Rails 3 Match était utilisé pour désigner une action à la fois pour “GET” et “POST” et pour d’autres types de requêtes.

match "user/account" => user#account 

Désormais, cela indiquera une action de compte du contrôleur de l’utilisateur pour les requêtes GET et POST. Comme Rails 4 “match” est devenu obsolète, pouvons-nous créer le même chemin pour GET et POST dans Rails 4?

A partir de la documentation de match , vous pouvez utiliser la match tant que vous avez via :

 match "user/account" => "user#account", as: :user_account, via: [:get, :post] 

Edit: Ajout d’un paramètre as: pour qu’il soit accessible via un assistant url. user_account_path ou user_account_url dans ce cas.

Sur les routes, la méthode de correspondance n’agira plus comme une option fourre-tout. Vous devez maintenant spécifier le verbe HTTP auquel répondre avec l’option: via

Rails 3.2

 match "/users/:id" => "users#show" 

Rails 4.0

 match "/users/:id" => "users#show", via: :get 

ou spécifiez plusieurs verbes

 match "/users" => "users#index", via: [:get, :post] 

Une autre option pour une meilleure compatibilité avec Rails 3.2 consiste à spécifier simplement vos actions avec un get explicite, un post ou tout autre verbe HTTP. Avec cette option, vous continuez à utiliser votre code aujourd’hui et à le tester pour la mise à niveau.

Compatible Rails 3.2 et 4.0

 get "/users/:id" => "users#show" 

plusieurs verbes

 get "/users" => "users#index" post "/users" => "users#index"