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