2012-09-18 16 views
6

Bir Builder :: XmlMarkup nesnesinden raw xml'ye erişme ile ilgili sorunlar yaşıyorum. Ben XML oluşturmak için Builder kullanıyorum bir komut dosyası olarak TypeError: Builder :: XmlMarkup öğesini Array 'a dönüştüremiyor

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' 

, bir POST için @xml geçiyorum:

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

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

Bu aynı hata veriyor

Elbette, @ xml.to_xml yaparsam, bir hata döndürmez, ancak xml'ye </to_xml> ekler, bu aslında XML nesnesini xml'ye dönüştürmez. İstediğim bu değil.

Peki, xml'ye ek düğüm eklemeden postama iletebilmem için xml'ye nasıl erişebilirim?

Düzenleme: olası çözüm @xml.target! sorunu çözmek gibi görünüyor, ama ben anlamak emin değilim Doing

.

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

Belki de birileri burada neler olup bittiğini anlamama yardımcı olabilir.

puts xml 

kullanma

cevap

0

:: XmlMarkup nesneyi Builder çıkışı ve dolayısıyla

puts xml.target! 

kullanma hatasını

verecek mi sen

istediğiniz şeydir geçerli xml dizesi çıktılar