Таким образом, ваша проблема заключается в том, что запись выводится на консоль, а не в шаблон.Также в ruby метод по умолчанию возвращает свой последний объект.Таким образом, ваш метод в том виде, в котором он написан, будет циклически перебирать @ child1, печатать каждый текст в консоль, а затем возвращать объект @ child1, после чего ваши erb-теги <% =%> сообщают ему о печати объекта (в данном случае @ child1)
У вас есть два варианта, либо вы можете переместить его в шаблон:
<% tol_get_names(@child1) do |e| %> #note just <% and not <%=
<%= e.text %>
<% end %>
Или построить свой метод так, чтобы он проходил по циклу при построении строки, а затем возвращал эту строку вместо исходногоobject:
def tol_get_names(child)
texts = [] #empty array for all our values
child.each_element { |e|
texts << e.text #add the text string to our array
end
texts.join(", ") #build a string and seperate it with a comma
end
Несколько способов написать такой метод, но это мой обычный способ.