Я пытаюсь передать массив как аргумент и использовать его в своем файле ERB.ruby - вставить массив в метод initialize - undefined method `join 'for: String (NoMethodError)
class Erbfile
def initialize ec2
@ec2 = ec2
#@ec2 = ["Cleveland", "Denver", "Nashville"] #this one work
@template = File.read('./file.erb')
end
def render
ERB.new(@template).result(binding)
end
end
ec2=[]
ec2.instances.each do |instance|
tag_name = Facter::Util::Resolution.exec("...")
mystring = "#{tag_name}"
ec2 << mystring
puts "#{ec2_without_tags}" ### ["test.ec2.mycomany.int"]
@page = Erbfile.new("#{ec2}")
end
Я использую в файле Еврорадио:
<th> <%= @ec2.join('<br />') %> </th>
И я получаю сообщение об ошибке:
(erb):20:in `render': undefined method `join' for "[\"test.ec2.mycomany.int\"]":String (NoMethodError)
Did you mean? JSON
, но если я буду вставлять массив вручную в метод инициализации, он будет работать ,
@ec2 = ["Cleveland", "Denver", "Nashville"]
Что я делаю неправильно?
Нет способа ['String # join'] (http://ruby-doc.org/core-2.2.0/String.html), как говорит ошибка. Код, скорее всего, ожидает массив; ошибка показывает * строковое представление * некоторого массива (JSON) - исправить это. – user2864740