La opción ": nada" está obsoleta y se eliminará en Rails 5.1

108

Este código en rieles 5

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

da como resultado la siguiente advertencia de obsolescencia

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

¿Cómo puedo solucionar esto?

Linus adelfa
fuente
2
¿Por qué se votó en contra?
Linus Oleander
3
probablemente porque la advertencia de obsolescencia le dice exactamente cómo solucionarlo.
sevenseacat
24
@sevenseacat No, solo se refiere a head, eso es todo. Aún tiene que buscar la API que se está utilizando. Tenga en cuenta que esta es una publicación de preguntas y respuestas con el objetivo de resolver rápidamente la advertencia de desaprobación anterior sin tener que leer la API oficial. La publicación actualmente ocupa el primer lugar en Google en la advertencia anterior, que era mi objetivo inicial.
Linus Oleander

Respuestas:

171

Según la fuente de los rieles , esto se hace debajo del capó al pasar nothing: truepor los rieles 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

Por lo tanto, solo reemplazar nothing: truecon body: nildebería resolver el problema.

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

alternativamente puedes usar head :ok

class PagesController < ApplicationController
  def action
    head :ok
  end
end
Linus adelfa
fuente
16
El headmétodo es la sintaxis preferida. Mucho más limpio.
Dan
3
render body: nilfuncionó para mí, render head :okno lo hizo (dio un doble error de renderizado).
Fellow Stranger
13
Si desea cambiar los códigos de estado, hay otras opciones además de :ok guides.rubyonrails.org/…
TJ Biddle
2
otro ejemplo sería head :unauthorizeddevolver el código de estado 401
Jirapong
14
@FellowStranger, no lo es render head: :ok, lo es head :ok. No se render. Yo también luché con eso.
ben