L'option «: rien» est obsolète et sera supprimée dans Rails 5.1


108

Ce code dans les rails 5

class PagesController < ApplicationController
  def action
    render nothing: true
  end
end

entraîne l'avertissement d'obsolescence suivant

DEPRECATION WARNING: :nothing` option is deprecated and will be removed in Rails 5.1. Use `head` method to respond with empty response body.

Comment puis-je réparer ça?


2
Pourquoi ce vote a-t-il été rejeté?
Linus Oleander

3
probablement parce que l'avertissement d'obsolescence vous indique exactement comment y remédier.
sevenseacat

24
@sevenseacat Non, cela fait simplement référence à head, c'est tout. Vous devez toujours rechercher l'API utilisée. Notez qu'il s'agit d'un article de style questions-réponses dans le but de résoudre rapidement l'avertissement de désapprobation ci-dessus sans avoir à lire l'API officielle. Le message est actuellement en train de ratisser le numéro 1 sur Google sur l'avertissement ci-dessus, qui était mon objectif initial.
Linus Oleander

Réponses:


171

Selon la source des rails , cela se fait sous le capot lors du passage nothing: truedans les rails 5.

if options.delete(:nothing)
  ActiveSupport::Deprecation.warn("`:nothing` option is deprecated and will be removed in Rails 5.1. Use `head` method to respond with empty response body.")
  options[:body] = nil
end

Le simple remplacement nothing: truepar body: nildevrait donc résoudre le problème.

class PagesController < ApplicationController
  def action
    render body: nil
  end
end

vous pouvez également utiliser head :ok

class PagesController < ApplicationController
  def action
    head :ok
  end
end

16
La headméthode est la syntaxe préférée. Beaucoup plus propre.
Dan

3
render body: nila fonctionné pour moi, render head :okn'a pas (cela a donné une erreur de double rendu).
Fellow Stranger

13
Si vous souhaitez modifier les codes de statut, il existe des options autres que juste :ok guides.rubyonrails.org
TJ Biddle

2
un autre exemple serait head :unauthorizedde renvoyer le code d'état 401
Jirapong

14
@FellowStranger, ce n'est pas render head: :ok, c'est head :ok. Non render. J'ai eu du mal avec ça aussi.
ben
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.