Die Option ": nichts" ist veraltet und wird in Rails 5.1 entfernt

108

Dieser Code in Schienen 5

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

führt zu der folgenden Verwerfungswarnung

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

Wie behebe ich das?

Linus Oleander
quelle
2
Warum wurde das abgelehnt?
Linus Oleander
3
wahrscheinlich, weil die Warnung zur Verwerfung Ihnen genau sagt, wie Sie das Problem beheben können.
Sevenseacat
24
@sevenseacat Nein, es bezieht sich nur darauf head, das ist alles. Sie müssen noch die verwendete API nachschlagen. Beachten Sie, dass dies ein Beitrag im Q & A-Stil ist, mit dem Ziel, die oben genannte Verfallswarnung schnell zu lösen, ohne die offizielle API lesen zu müssen. Der Beitrag ist derzeit die Nummer 1 bei Google in Bezug auf die obige Warnung, was mein ursprüngliches Ziel war.
Linus Oleander

Antworten:

171

Laut der Schienenquelle erfolgt dies unter der Haube beim Einfahren nothing: truein Schienen 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

Nur das Ersetzen nothing: truedurch body: nilsollte daher das Problem lösen.

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

alternativ können Sie verwenden head :ok

class PagesController < ApplicationController
  def action
    head :ok
  end
end
Linus Oleander
quelle
16
Die headMethode ist die bevorzugte Syntax. Viel sauberer.
Dan
3
render body: nilhat bei mir render head :okfunktioniert, nicht (es gab einen doppelten Renderfehler).
Fellow Stranger
13
Wenn Sie die Statuscodes ändern :ok möchten
TJ Biddle
2
Ein anderes Beispiel wäre die head :unauthorizedRückgabe des Statuscodes 401
Jirapong
14
@FellowStranger, es ist nicht render head: :ok, es ist head :ok. Nein render. Ich hatte auch damit zu kämpfen.
Ben