Следующее использование некорректно, если массив один:
address_block.each do |company_name, address, city, state, zip, tel, email, web_address|
Поскольку address_block
является массивом, и только 1 аргумент передается блоку как член массива.
Таким образом, вы изменили бы его с помощью следующего фрагмента кода.
address_book.each do |address_block|
email_temp << "Company Name: #{address_block.first} "
email_temp << address_block[1..4].join(' ')
email_temp << " Tel: #{address_block[5]} #{address_block[6..7].join(' ') }"
end
ОБНОВЛЕНИЕ Благодаря @ sebastian-palma я узнал новое о рубиновых блоках, когда речь идет о вложенных массивах.Поэтому я обновляю решение для этого вопроса.Но я не рекомендую это решение из-за запахов кода.
address_book.each do |company_name, address, city, state, zip, tel, email, web_address|
email_temp << "Company Name: #{company_name} #{address} #{city} #{state} #{zip} Tel: #{tel} #{email} #{web_address}"
end