L'opzione ": nothing" è deprecata e verrà rimossa in Rails 5.1


108

Questo codice in rails 5

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

si traduce nel seguente avviso di deprecazione

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

Come lo risolvo?


2
Perché è stato downvoted?
Linus Oleander

3
probabilmente perché l'avviso di deprecazione ti dice esattamente come risolverlo.
sevenseacat

24
@sevenseacat No, si riferisce solo a head, tutto qui. Devi ancora cercare l'API utilizzata. Nota che questo è un post in stile Q&A con l'obiettivo di risolvere rapidamente l'avviso di deprecazione sopra senza dover leggere l'API ufficiale. Il post è attualmente al primo posto su Google sull'avvertimento sopra, che era il mio obiettivo iniziale.
Linus Oleander

Risposte:


171

Secondo la fonte dei binari , questo viene fatto sotto il cofano quando si passa nothing: truenei binari 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

La semplice sostituzione nothing: truecon body: nildovrebbe quindi risolvere il problema.

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

in alternativa puoi usare head :ok

class PagesController < ApplicationController
  def action
    head :ok
  end
end

16
Il headmetodo è la sintassi preferita. Molto più pulito.
Dan

3
render body: nilha funzionato per me, render head :okno (ha dato qualche errore di doppio rendering).
Fellow Stranger

13
Se desideri modificare i codici di stato, ci sono opzioni diverse da :ok guide.rubyonrails.org/…
TJ Biddle

2
un altro esempio potrebbe essere il head :unauthorizedcodice di stato restituito 401
Jirapong

14
@FellowStranger, non lo è render head: :ok, lo è head :ok. No render. Ho lottato anche con quello.
ben
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.