Параметр ": нічого" застарілий і буде видалений у Rails 5.1


108

Цей код у рейках 5

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

призводить до наступного попередження про анулювання

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

Як це виправити?


2
Чому це було знято?
Лінус Олеандр

3
ймовірно, тому, що попередження про депресію говорить саме про те, як це виправити.
sevenseacat

24
@sevenseacat Ні, це просто стосується head, ось і все. Ви все ще повинні шукати API, який використовується. Зауважте, що це публікація у стилі запитань та завдань, метою якої є швидке вирішення вищезазначеного попередження про депресію без необхідності читати офіційний API. Наразі ця публікація заграє №1 у google на попередньому попередженні, що було моєю початковою метою.
Лінус Олеандр

Відповіді:


171

За даними джерела рейок , це робиться під капотом при проходженні nothing: trueв рейки 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

Отже, лише заміна nothing: trueна body: nilцю проблему повинна вирішити проблему.

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

Ви також можете використовувати head :ok

class PagesController < ApplicationController
  def action
    head :ok
  end
end

16
headМетод найбільш прийнятний синтаксисом. Значно чистіше.
Dan

3
render body: nilпрацював на мене, render head :okне (це дало деяку подвійну помилку візуалізації).
Непознаний незнайомець

13
Якщо ви хочете змінити коди статусу, є інші варіанти, крім просто :ok guides.rubyonrails.org/…
TJ Biddle

2
Іншим прикладом може бути head :unauthorizedповернення коду статусу 401
Jirapong

14
@FellowStranger, це не так render head: :ok, це head :ok. Ні render. Я теж боровся з цим.
бен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.