2010-07-28 8 views
12

मैं एक खाली शरीर के साथ 200 स्थिति वापस करने की कोशिश कर रहा हूं लेकिन रेल एक ही स्थान के साथ एक शरीर लौटाती है। अर्थात सामग्री-लंबाई 1रेल में वास्तव में खाली शरीर कैसे वापस करें? यानी सामग्री-लंबाई 0

उदाहरण के लिए, इस कोड को एक जगह

respond_to do |f| 
    f.html {head :ok} 
end 

के साथ एक शरीर उत्पन्न करता है और इसलिए इस

respond_to do |f| 
    f.html {render :nothing => true} 
end 

हाँ करता है, यहां तक ​​कि प्रस्तुत करना: कुछ भी नहीं कुछ उत्पन्न करता है।

यह सब रेलवे में 2005 पैच से बहने लगते हैं जो सफारी में एक बग को ठीक करने के लिए डिज़ाइन किया गया था, जहां यह शरीर खाली होने पर हेडर को अनदेखा कर देगा। (http://dev.rubyonrails.org/changeset/1818)

क्या किसी के पास 200 स्थिति प्राप्त करने के बारे में कोई विचार है लेकिन वास्तव में खाली शरीर के साथ? पृष्ठभूमि: मैं एक एपीआई का उपयोग कर रहा हूं जो मेरे नियंत्रकों को कॉल करता है। मुझे 200 भेजने की जरूरत है लेकिन एकल स्पेस बॉडी एपीआई को खराब करने का कारण बनती है (पार्स त्रुटि ...)। इसके अलावा, मैं हेरोोकू पर तैनात कर रहा हूं, इसलिए मैं 2005 हैक को पूर्ववत करने के लिए एक्शनपैक पैच नहीं कर सकता।

किसी भी विचार के लिए धन्यवाद।

उत्तर

26

यह

render :text => "" 

काम करने के लिए रेल 3 के लिए प्रकट होता है, तो आप इस्तेमाल कर सकते हैं:

render :nothing => true

रेल 5 में, render :nothing => true बहिष्कृत है

(5.1 में हटाने के लिए योजना बनाई)

def action 
    head :ok 
end 
का उपयोग करें

रेल 5 समाधान के लिए this question पर क्रेडिट।

+0

यह मेरे लिए भी काम करता है! तुम कमाल हो! बहुत तेज़ प्रतिक्रिया के लिए धन्यवाद। मुझे प्यार है कि आपकी प्रतिक्रिया कितनी सरल है। – rhh

+2

'प्रस्तुत करें: कुछ भी नहीं => सत्य' रेल के साथ 1 की सामग्री-लंबाई देता है 3.2.13। –

+0

रेल 4 उत्तर यहां है: http://stackoverflow.com/questions/4632271/render-nothing-true-returns-empty-plaintext-file – rmcsharry

संबंधित मुद्दे