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?


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.