Как уже упоминалось в другом ответе, использование каждого из них не сработает - оно не возвращает внутреннее содержимое блока.Просто в качестве примера, попробуйте выполнить это в irb:
result = 1.upto(3) do |x| x; end
результат будет "1"
Вот более чистый тест вашего кода, попробуйте его и посмотрите - он не будетвернуть что-нибудь:
def random_test
content_tag(:div, "hello") do
1.upto(3) do |x|
content_tag(:p, x)
end
end
end
Вместо этого вам нужно собрать выходные данные вашего итератора, что-то вроде этого:
def random_test
content_tag(:div, "hello") do
1.upto(3) do |x|
content_tag(:p, x)
end
end
end