2012-09-18 10 views
6

में परिवर्तित नहीं कर सकता है मुझे किसी बिल्डर :: XmlMarkup ऑब्जेक्ट से कच्चे एक्सएमएल तक पहुंच प्राप्त करने में समस्याएं आ रही हैं।टाइपरर: बिल्डर :: XmlMarkup को Array

irb> xml = Builder::XmlMarkup.new(:target => '') 
=> <pretty_inspect/> 

irb> xml.foo("bar") 
=> "<pretty_inspect/><foo>bar</foo>" 

irb> puts xml 
TypeError: can't convert Builder::XmlMarkup to Array (Builder::XmlMarkup#to_ary gives String) 
from (pry):122:in `puts' 

एक स्क्रिप्ट है जहाँ मैं एक्सएमएल बनाने के लिए बिल्डर का उपयोग कर रहा है, मैं एक पोस्ट करने के लिए @xml गुजर रही है:

TypeError (can't convert Builder::XmlMarkup to Array (Builder::XmlMarkup#to_ary gives String)): 
:

response = HTTParty.post(API_ENDPOINT, :body => @xml) 

यह वही त्रुटि देता है

बेशक, अगर मैं @ xml.to_xml करता हूं, तो यह कोई त्रुटि नहीं देता है, लेकिन यह </to_xml> को एक्सएमएल में जोड़ता है, जिसका अर्थ है कि यह वास्तव में एक्सएमएल ऑब्जेक्ट को एक्सएमएल में परिवर्तित नहीं कर रहा है। यही वह नहीं है जो मैं चाहता हूं।

तो मैं एक्सएमएल तक पहुंच कैसे प्राप्त कर सकता हूं ताकि मैं इसे अपने एक्सएमएल में अतिरिक्त नोड्स जोड़ने के बिना अपने पोस्ट में पास कर सकूं?

संपादित करें: संभव समाधान

कर @xml.target! समस्या को हल करने के लिए लगता है, लेकिन मुझे यकीन है कि मुझे समझ में क्यों नहीं हूँ।

response = HTTParty.post(API_ENDPOINT, :body => @xml.target!) 

शायद कोई मुझे यह समझने में सहायता कर सकता है कि यहां क्या हो रहा है।

उत्तर

0

puts xml 

का उपयोग करते हुए बिल्डर outputting है :: XmlMarkup वस्तु और इसलिए त्रुटि

puts xml.target! 

का उपयोग देने के वर्तमान एक्सएमएल स्ट्रिंग है, जो आउटपुट क्या आप

चाहते