“: nothing”옵션은 더 이상 사용되지 않으며 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
왜 이것이 반대표를 받았습니까?
Linus Oleander

3
지원 중단 경고가 문제를 해결하는 방법을 정확히 알려주기 때문일 것입니다.
sevenseacat

24
@sevenseacat 아니요, 그게 head전부입니다. 여전히 사용중인 API를 찾아야합니다. 이것은 공식 API를 읽지 않고도 위의 지원 중단 경고를 빠르게 해결하기위한 Q & A 스타일의 게시물입니다. 이 게시물은 현재 위의 경고에 대해 Google에서 # 1을 긁고 있으며, 이것이 저의 초기 목표였습니다.
Linus Oleander

답변:


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방법은 기본 구문입니다. 훨씬 더 깨끗합니다.

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. 나도 그것으로 고생했다.
ben
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.