Tùy chọn “: nothing” không được dùng nữa và sẽ bị xóa trong Rails 5.1


108

Mã này trong đường ray 5

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

dẫn đến cảnh báo không dùng nữa sau đây

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

Làm cách nào để sửa lỗi này?


2
Tại sao điều này bị phản đối?
Linus Oleander

3
có thể là do cảnh báo không dùng nữa cho bạn biết chính xác cách khắc phục.
Sevenseacat

24
@sevenseacat Không, nó chỉ đề cập đến head, vậy thôi. Bạn vẫn phải tra cứu API đang được sử dụng. Lưu ý rằng đây là bài đăng kiểu Hỏi & Đáp với mục tiêu giải quyết nhanh chóng cảnh báo không dùng nữa ở trên mà không cần phải đọc qua API chính thức. Bài viết hiện đang xếp hạng 1 trên google về cảnh báo trên, đó là mục tiêu ban đầu của tôi.
Linus Oleander

Câu trả lời:


171

Theo nguồn tin của đường ray , điều này được thực hiện dưới mui xe khi đi qua nothing: trueđường ray số 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

Do đó chỉ cần thay thế nothing: truebằng body: nilnên giải quyết được vấn đề.

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

cách khác, bạn có thể sử dụng head :ok

class PagesController < ApplicationController
  def action
    head :ok
  end
end

16
Các headphương pháp là cú pháp ưa thích. Sạch hơn nhiều.
Dan

3
render body: nilđã làm việc cho tôi, render head :okkhông (nó gây ra một số lỗi kết xuất kép).
Fellow Stranger,

13
Nếu bạn muốn thay đổi mã trạng thái, có các tùy chọn khác ngoài chỉ :ok dẫn.rubyonrails.org/
TJ Biddle

2
một ví dụ khác là head :unauthorizedtrả về mã trạng thái 401
Jirapong 22/02/17

14
@FellowStranger, nó không phải render head: :ok, nó là head :ok. Không render. Tôi cũng đã đấu tranh với điều đó.
ben
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.