Hash to_xml from_xml

B

bradphelan

Am I missing something

require 'active_record'
require 'active_support'
require 'pp'

v = Hash.from_xml %{
<hash>
<users type="array">
<user type="integer">1</user>
<user type="integer">2</user>
<user type="integer">3</user>
</users>
</hash>
}
pp v
pp v.to_xml

generates

{"hash"=>{"users"=>[1, 2, 3]}}

/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/
core_ext/array/conversions.rb:163:in `to_xml': Not all elements
respond to to_xml (RuntimeError)
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:115:in `to_xml'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:110:in `each'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:110:in `to_xml'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/
xmlbase.rb:134:in `call'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/
xmlbase.rb:134:in `_nested_structures'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/
xmlbase.rb:58:in `method_missing'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:109:in `__send__'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:109:in `to_xml'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:113:in `to_xml'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:110:in `each'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:110:in `to_xml'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/
xmlbase.rb:134:in `call'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/
xmlbase.rb:134:in `_nested_structures'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/
xmlbase.rb:58:in `method_missing'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:109:in `__send__'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:109:in `to_xml'

Any way to get this working?

Brad
 
B

Brian Candler

bradphelan said:
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/
core_ext/array/conversions.rb:163:in `to_xml': Not all elements
respond to to_xml (RuntimeError)

Indeed: ActiveSupport is trying to call to_xml on each element of the
array, and failing.
NoMethodError: undefined method `to_xml' for 1:Fixnum
from (irb):4
Any way to get this working?

Googling "rails to_xml", the second hit is
http://api.rubyonrails.org/classes/ActiveRecord/XmlSerialization.html
I also found
http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Array/Conversions.html#M001207

This suggests it's only intended for use with ActiveRecord objects and
collections of ActiveRecord objects, but you may need to dig further
into the code. Perhaps have a look at ActiveResource.

However, these are all parts of Rails, and Rails questions are best
asked in a Rails forum.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,763
Messages
2,569,560
Members
45,035
Latest member
HoTaKeDai

Latest Threads

Top