": कुछ भी नहीं" विकल्प पदावनत है और रेल 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

24
@sevenseacat नहीं, यह सिर्फ संदर्भित करता है head, बस । आपको अभी भी उपयोग किए जा रहे एपीआई को देखना होगा। ध्यान दें कि यह आधिकारिक एपीआई के माध्यम से पढ़ने के बिना उपरी अवतरण चेतावनी को जल्दी से हल करने के लक्ष्य के साथ एक प्रश्नोत्तर शैली की पोस्ट है। वर्तमान में उपरोक्त चेतावनी पर Google पर # 1 पोस्ट हो रहा है, जो मेरा प्रारंभिक लक्ष्य था।
लाइनस ओलेन्डर

जवाबों:


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नहीं (यह कुछ डबल रेंडर त्रुटि दिया)।
फेलो स्ट्रेंजर

13
यदि आप स्टेटस कोड बदलना चाहते हैं, तो सिर्फ :ok गाइड के
TJ Biddle

2
एक अन्य उदाहरण head :unauthorizedस्थिति कोड 401
जिरापॉन्ग

14
@ फेलस्ट्रेनर, यह नहीं है render head: :ok, यह नहीं है head :ok। नहीं render। मैंने उससे भी संघर्ष किया।
बेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.