A opção “: nothing” está obsoleta e será removida no Rails 5.1

108

Este código nos trilhos 5

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

resulta no seguinte aviso de suspensão de uso

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

Como faço para corrigir isso?

Linus Oleander
fonte
2
Por que isso foi rejeitado?
Linus Oleander
3
provavelmente porque o aviso de descontinuação informa exatamente como corrigi-lo.
sevenseacat
24
@sevenseacat Não, apenas se refere a head, isso é tudo. Você ainda precisa pesquisar a API em uso. Observe que esta é uma postagem no estilo de perguntas e respostas com o objetivo de resolver rapidamente o aviso de suspensão de uso acima, sem ter que ler a API oficial. A postagem está atualmente arrecadando # 1 no google sobre o aviso acima, que era meu objetivo inicial.
Linus Oleander

Respostas:

171

De acordo com a fonte dos trilhos , isso é feito sob o capô ao passar nothing: truenos trilhos 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

Portanto, apenas substituir nothing: truepor body: nildeve resolver o problema.

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

alternativamente, você pode usar head :ok

class PagesController < ApplicationController
  def action
    head :ok
  end
end
Linus Oleander
fonte
16
O headmétodo é a sintaxe preferida. Muito mais limpo.
Dan
3
render body: nilfuncionou para mim, render head :oknão (deu algum erro de renderização dupla).
Companheiro Estranho
13
Se você gostaria de alterar os códigos de status, há outras opções além de somente :ok guias.rubyonrails.org/…
TJ Biddle
2
outro exemplo seria head :unauthorizedretornar o código de status 401
Jirapong
14
@FellowStranger, não é render head: :ok, é head :ok. Não render. Eu lutei com isso também.
Ben