web-dev-qa-db-fra.com

Identique Rails 4 itinéraires pour GET et POST requêtes

In Rails 3 Match utilisé pour pointer vers une action à la fois "GET" et "POST" et d'autres types de demandes.

match "user/account" => user#account

Maintenant, cela indiquera l'action du contrôleur de l'utilisateur pour les requêtes GET et POST. Comme dans Rails 4 "match" est déconseillé, pouvons-nous créer la même route pour OBTENEZ et POSTEZ dans Rails 4?

40
Adnan Ali

De la documentation match , vous pouvez utiliser match tant que vous avez via:

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

Modifier: ajout d'un as: paramètre pour qu'il soit accessible via un assistant url. user_account_path ou user_account_url dans ce cas.

85
Tim Dorr

Sur les itinéraires, 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é Rails 3.2 consiste à simplement spécifier vos actions avec get, post ou tout autre verbe HTTP explicite. Avec cette option, vous obtenez toujours votre code en cours d'exécution aujourd'hui et le testez 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"
43
Ch Zeeshan