How do I use savon nested attributes! hash?
ruby, savon, soap
Solution
You were close - just needed to put the `:attributes!` key in the same hash that contains the value.
{
:person => {
:address => "",
:attributes! => { :address => { :id => 44 } }
},
:attributes! => { :person => { :id => 666 } }
}.to_soap_xml
# => "<person id=\"666\"><address id=\"44\"></address></person>"
Problem
I'm looking at using Ruby savon for SOAP. For purely masochistic reasons I have to deal with SOAP elements having attributes. So, no problem, there is an example on the savon docs site which highlights this ability: ``` { :person => "Eve", :attributes! => { :person => { :id => 666 } } }.to_soap_xml "<person id=\"666\">Eve</person>" ``` My problem is how do I set attributes on child elements, for example, say I add an address child element to person: ``` { :person => {:address => ""}, :attributes! => { :person => { :id => 666 } } }.to_soap_xml ``` Now I want to add an id attribute to the address element: It's no go if I nest address in the attributes hash: ``` { :person => {:address => ""}, :attributes! => { :person => { :id => 666, :address => {:id => 44 }} }}.to_soap_xml ``` So my question is, how can I get this? ``` <person id=666><address id=44></address></person> ```