Если вы посмотрите на документацию , в ней упоминается, что при использовании xml_out следует избегать значений nil. Я бы порекомендовал один из следующих подходов:
# To create an empty anon element:
XmlSimple.xml_out([{'a' => 1}, {}])
=> "<opt>\n <anon a=\"1\" />\n <anon></anon>\n</opt>\n"
# To create an anon element with a blank 'a' attribute:
XmlSimple.xml_out([{'a' => 1}, {'a' => ''}])
=> "<opt>\n <anon a=\"1\" />\n <anon a=\"\" />\n</opt>\n"
# To remove the attribute entirely (with value of 3),
# but still create an empty anon tag:
XmlSimple.xml_out([{'a' => 1}, {'-a' => 3}])
=> "<opt>\n <anon a=\"1\" />\n <anon />\n</opt>\n"
# To remove the attribute entirely (with value of nil),
# but still create an empty anon tag:
XmlSimple.xml_out([{'a' => 1}, {'-a' => nil}])
=> "<opt>\n <anon a=\"1\" />\n <anon />\n</opt>\n"