Opsi ": nothing" tidak digunakan lagi dan akan dihapus di Rails 5.1

108

Kode ini di rel 5

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

menghasilkan peringatan penghentian berikut

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

Bagaimana cara mengatasinya?

Linus Oleander
sumber
2
Mengapa ini tidak disukai?
Linus Oleander
3
mungkin karena peringatan penghentian memberi tahu Anda cara memperbaikinya dengan tepat.
sevenseacat
24
@sevenseacat Tidak, itu hanya mengacu pada head, itu saja. Anda masih harus mencari API yang digunakan. Perhatikan bahwa ini adalah postingan bergaya Tanya Jawab dengan tujuan untuk menyelesaikan peringatan penghentian penggunaan di atas dengan cepat tanpa harus membaca API resmi. Posting saat ini menempati # 1 di google pada peringatan di atas, yang merupakan tujuan awal saya.
Linus Oleander

Jawaban:

171

Menurut sumber rel , ini dilakukan di bawah kap saat melewati nothing: truerel 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

Hanya mengganti nothing: truedengan body: nilseharusnya menyelesaikan masalah.

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

sebagai alternatif Anda dapat menggunakan head :ok

class PagesController < ApplicationController
  def action
    head :ok
  end
end
Linus Oleander
sumber
16
The headmetode adalah sintaks yang lebih disukai. Jauh lebih bersih.
Dan
3
render body: nilbekerja untuk saya, render head :oktidak (itu memberikan beberapa kesalahan render ganda).
Fellow Stranger
13
Jika Anda ingin mengubah kode status, ada opsi selain hanya :ok panduan. Rubyonrails.org/…
TJ Biddle
2
contoh lain adalah head :unauthorizedmengembalikan kode status 401
Jirapong
14
@FellowStranger, itu tidak render head: :ok, itu head :ok. Tidak render. Saya berjuang dengan itu juga.
ben