Lorsque l'on utilise la fonction render ou head dans un controller avec Ruby on Rails et que l'on souhaite modifier le code HTTP renvoyé, on à deux possibilités.
1. Utiliser le code en chiffre
head 400
render :index, status: 400
  
  Ce n'est pas très pratiques car si l'on ne connait pas par coeur les codes HTTP (comme moi par exemple), on se retrouve vite à devoir lire la documentation à chaque code review !
2. Utiliser les symboles de rails
head :bad_request
render :index, status: :bad_request
  
  Déjà, c'est beaucoup plus clair ! N'importe qui maintenant sait que nous renvoyons le code lié à une Bad Request.
Liste des correspondances
| Code HTTP | Symbole | 
|---|---|
| 1xx Family (Information) | |
| 100 | :continue | 
| 101 | :switching_protocols | 
| 102 | :processing | 
| 2xx Family (Succès) | |
| 200 | :ok | 
| 201 | :created | 
| 202 | :accepted | 
| 203 | :non_authoritative_information | 
| 204 | :no_content | 
| 205 | :reset_content | 
| 206 | :partial_content | 
| 207 | :multi_status | 
| 226 | :im_used | 
| 3xx Family (Redirection) | |
| 300 | :multiple_choices | 
| 301 | :moved_permanently | 
| 302 | :found | 
| 303 | :see_other | 
| 304 | :not_modified | 
| 305 | :use_proxy | 
| 307 | :temporary_redirect | 
| 4xx Family (Erreur Client) | |
| 400 | :bad_request | 
| 401 | :unauthorized | 
| 402 | :payment_required | 
| 403 | :forbidden | 
| 404 | :not_found | 
| 405 | :method_not_allowed | 
| 406 | :not_acceptable | 
| 407 | :proxy_authentication_required | 
| 408 | :request_timeout | 
| 409 | :conflict | 
| 410 | :gone | 
| 411 | :length_required | 
| 412 | :precondition_failed | 
| 413 | :payload_too_large | 
| 414 | :uri_too_long | 
| 415 | :unsupported_media_type | 
| 416 | :range_not_satisfiable | 
| 417 | :expectation_failed | 
| 422 | :unprocessable_entity | 
| 423 | :locked | 
| 424 | :failed_dependency | 
| 426 | :upgrade_required | 
| 5xx Family (Erreur Serveur) | |
| 500 | :internal_server_error | 
| 501 | :not_implemented | 
| 502 | :bad_gateway | 
| 503 | :service_unavailable | 
| 504 | :gateway_timeout | 
| 505 | :http_version_not_supported | 
| 507 | :insufficient_storage | 
| 510 | :not_extended | 
Vous ne comprenez rien à tous ces codes ? C'est peut-être le moment de faire un tour sur nos cours ou de nous contacter pour faire votre site web !
N'hésitez pas à consulter nos autres guides !