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?


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.