ตัวเลือก“: 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 อย่างเป็นทางการ ขณะนี้โพสต์ดังกล่าวได้รับความนิยมอันดับ 1 ใน Google เกี่ยวกับคำเตือนข้างต้นซึ่งเป็นเป้าหมายแรกของฉัน
Linus Oleander

คำตอบ:


172

ตามแหล่งที่มาของรางจะทำภายใต้ฝากระโปรงเมื่อผ่าน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 guide.rubyonrails.org/…
TJ Biddle

2
อีกตัวอย่างหนึ่งคือhead :unauthorizedการส่งคืนรหัสสถานะ 401
Jirapong

14
@FellowStranger ก็ไม่ได้ก็render head: :ok ไม่head :ok renderฉันก็ดิ้นรนด้วยเช่นกัน
เบน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.