Ruby Array -> String Conversion Issue

(Newbie Alert!)

I have a CGI script that takes an address and tries to put it as hidden
form data on a new page. "post" is a hash of POST data.

["addr1", "addr2", "city", "state", "zip", "country"].each do |part|
  puts "<input type=\"hidden\" name=\"" + part.to_s + "\" value=\"" +
post[part.to_s] + "\" />"
end

This code generates the complaint that "part" is an array, and thus
cannot be converted to a string. How do I iterate over each item in that
array of address data?

···

--
Posted via http://www.ruby-forum.com/.

I see no problem with that code, except I would write it as:

%w{addr1 addr2 city state zip country}.each do |part|
   puts %{<input type="hidden" name="#{part}" value="#{post[part]}" />}
end

You don't have another local variable named part, do you?

When you convert an array to a string, all the elements just get mashed together: %w{foo bar baz}.to_s -> "foobarbaz"

-- Daniel

···

On Mar 6, 2006, at 5:57 PM, Nathan O. wrote:

This code generates the complaint that "part" is an array, and thus
cannot be converted to a string. How do I iterate over each item in that
array of address data?

Ah, my mistake. I assumed it was talking about my "part" variable when
it was talking about my reference to post[part.to_s], which returns an
array. I'm not sure it's the tidiest fix, but I changed this to
post[part.to_s].to_s, and it works. Well, that part works, now I have
other issues :slight_smile:

%w{addr1 addr2 city state zip country}.each do |part|
   puts %{<input type="hidden" name="#{part}" value="#{post[part]}" />}
end

This looks like one of those things I'm going to have to look up! Thanks
for the pointer!

···

--
Posted via http://www.ruby-forum.com/\.