Возможно, вы захотите что-то вроде этого:
def html_list(tag, enum)
html = '<' + tag.to_s + '><li>'
html << enum.map { |e| yield e }.join('</li><li>')
html << '</li></' + tag.to_s + '>'
html.html_safe
end
или, возможно, так:
def html_list(tag, enum)
html = [
'<' + tag.to_s + '>',
'<li>',
enum.map { |e| yield e }.join('</li><li>'),
'</li>',
'</' + tag.to_s + '>'
]
html.join.html_safe
end
Существуют различные способы построения окончательной строки, суть которой заключается в том, что вы создаете метод, который принимает блок, выполняет итерацию по перечисляемому и применяет блок к каждому элементу по пути.