Sto riscontrando problemi con l'accesso all'XML raw da un oggetto Builder :: XmlMarkup.TypeError: impossibile convertire Builder :: XmlMarkup nell'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'
In uno script in cui sto usando Builder per creare l'XML, sto passando atributo @xml ad un POST:
response = HTTParty.post(API_ENDPOINT, :body => @xml)
Questo dà lo stesso errore:
TypeError (can't convert Builder::XmlMarkup to Array (Builder::XmlMarkup#to_ary gives String)):
Ovviamente, se faccio @ xml.to_xml, non restituisce un errore, ma aggiunge </to_xml>
a xml, il che significa che in realtà non converte l'oggetto XML in xml. Non è quello che voglio.
Quindi, come posso ottenere l'accesso all'accesso xml in modo che possa passarlo al mio post senza aggiungere nodi aggiuntivi al mio xml?
Edit: possibile soluzione
Facendo @xml.target!
sembra risolvere il problema, ma non sono sicuro di aver capito il motivo.
response = HTTParty.post(API_ENDPOINT, :body => @xml.target!)
Forse qualcuno può aiutarmi a capire cosa sta succedendo qui.