Встроенный шаблон Синатры не вызывается

Я подтвердил, что Merchant.find_all правильно возвращает перечислитель со многими элементами. Однако, когда я запускаю следующий код, я получаю пустую страницу. Почему встроенный шаблон не вызывается повторно и выводит "привет" несколько раз?

require 'sinatra'
require 'sinatra/reloader'
require 'sequel'
require_relative 'config/init'
require_relative 'merchant'

get '/' do
  Merchant.find_all.each do |m|
    erb :layout
  end
  ""
end

__END__

@@ layout
hello

1 ответ

Решение

Вы возвращаете пустую строку из блока маршрута. Вернуть результат erb. Если вы хотите рендерить этот вид несколько раз, сохраните результат каждого erb в строковый буфер и вернуть это.

get '/' do
  result = ''
  Merchant.find_all.each do |m|
    result += erb(:layout)
  end
  result
end

Я никогда не пробовал, но думаю, что это сработает...

Другие вопросы по тегам