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
match "/users/:id" => "users#show"
match "/users/:id" => "users#show", via: :get
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.
get "/users/:id" => "users#show"
get "/users" => "users#index" post "/users" => "users#index"