How to iterate of the attributes of an object?

I need to build a string of all populated attributes of a given object.

I need to get the attribute name and it’s value

Also,the object may have 10 attributes, but I’m only interested in the
attribute that are not nil.

here’s a sample object:
foo = Foo.new(:bar => ‘baz’, :bar2 => ‘baz2’, :bar3 => ‘baz3’)

ultimately what I want is this as a string like this:
“:bar => ‘baz’, :bar2 => ‘baz2’, :bar3 => ‘baz3’”

code should be something like this? (sorry I’m a newbie)

s = “”

foo.instance_values.each do |v|
s += “:#{v.name} => #{v.value}”
end

s.split(",")

Rich S. wrote:

I need to build a string of all populated attributes of a given object.

I need to get the attribute name and it’s value

Also,the object may have 10 attributes, but I’m only interested in the
attribute that are not nil.

here’s a sample object:
foo = Foo.new(:bar => ‘baz’, :bar2 => ‘baz2’, :bar3 => ‘baz3’)

ultimately what I want is this as a string like this:
“:bar => ‘baz’, :bar2 => ‘baz2’, :bar3 => ‘baz3’”

code should be something like this? (sorry I’m a newbie)

s = “”

foo.instance_values.each do |v|
s += “:#{v.name} => #{v.value}”
end

s.split(",")

C:\Documents and Settings\chen73>irb
irb(main):001:0> foo = {:bar => ‘baz’, :bar2 => ‘baz2’, :bar3 => ‘baz3’}
=> {:bar3=>“baz3”, :bar=>“baz”, :bar2=>“baz2”}
irb(main):002:0> foo.each{|k,v| puts “#{k} “+”=>”+"#{v}" }
bar3 =>baz3
bar =>baz
bar2 =>baz2
=> {:bar3=>“baz3”, :bar=>“baz”, :bar2=>“baz2”}

Li

Rich S. wrote:

I need to build a string of all populated attributes of a given object.

I need to get the attribute name and it’s value

Define “attribute”. You can print a list of instance variables and their
values like this:
puts instance_variables.map {|var| “#{var}:
#{instance_variable_get(var)}”}

HTH,
Sebastian

If you are trying to serialize, deserialize an object, you might be
insterested in http://json.rubyforge.org/.

g.