Параметр «: ничего» устарел и будет удален в 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 02

24
@sevenseacat Нет, это просто относится head, вот и все. Вам все равно придется искать используемый API. Обратите внимание, что это сообщение в стиле вопросов и ответов с целью быстро решить указанное выше предупреждение об устаревании без необходимости читать официальный API. Сообщение в настоящее время занимает первое место в Google по вышеупомянутому предупреждению, что и было моей первоначальной целью.
Линус Олеандр

Ответы:


173

Согласно источнику рельсов , это делается под капотом при проезде 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Метод является предпочтительным синтаксисом. Намного чище.
Дэн

3
render body: nilработал у меня, render head :okне работал (это дало некоторую двойную ошибку рендеринга).
Fellow Stranger

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.