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?


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.