65 votes

Comment retourner HTTP 204 dans un contrôleur Rails ?

Cela semble basique mais je suis un débutant en Ruby/Rails. J'ai besoin de retourner simplement HTTP 204 dans un contrôleur. Est-ce que

respond_to do |format|
  format.html  
end

retourner un 204 ?

115voto

Eliot Sykes Points 1174
head :no_content

Testé avec Rails 3.2.x, 4.x. Il entraîne une réponse de la méthode du contrôleur avec le code d'état HTTP 204 No Content.

Un exemple d'utilisation de cette méthode dans un contrôleur nommé foobar :

def foobar
  head :no_content
end

16voto

Michael Kohl Points 33345

Regardez le tête méthode :

Renvoie une réponse qui n'a pas de contenu (seulement des en-têtes). L'argument options est interprété comme étant un hachage de noms et de valeurs d'en-têtes.

0 votes

Merci Michael. head :ok est pour HTTP 200 et head :created est pour 201, mais je n'ai pas trouvé l'argument que je dois utiliser avec head pour retourner un 204.

1 votes

Je pense avoir trouvé la solution : head :no_content ou head 204. Merci !

0 votes

Si cela a répondu à votre question, veuillez accepter la réponse en cochant la petite marque sous les flèches de vote afin que les autres utilisateurs sachent que ce problème est résolu.

12voto

thorsten müller Points 3518

Si vous ne voulez rien rendre du tout, vous pouvez faire ceci :

render :nothing => true, :status => 204

ou comme ça :

render :nothing => true, :status => 204 and return

Ou vous pouvez utiliser le :status => 204 avec toute autre commande de rendu

1 votes

Il existe un ancien ticket Rails qui déconseille cette pratique, mais les choses ont peut-être changé depuis : rails.lighthouseapp.com/projets/8994/tickets/

0 votes

@Michael Kohl : Merci pour ce lien, je n'étais pas au courant de cela. D'après ce que j'ai compris, c'est plus une question de style ou de code lisible, et l'utilisation de l'option head au lieu de render :nothing devrait être plus explicite, car l Guide Ruby On Rails explique également

-1voto

Pedro Nascimento Points 3781
render :nothing, :status => 204

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X