如何在 Ruby 和 ERB(不是 Rails)中使用视图和布局?

use*_*920 1 ruby rack erb sinatra

如何在 Ruby 和 ERB(不是 Rails)中使用视图和布局?

今天我使用这个代码来呈现我的观点:

def render(template_path, context = self)
 template = File.read(template_path)
 ERB.new(template).result(context.get_binding)
end
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但我如何实现相同的功能,但要在布局内呈现模板?我想调用 render_with_layout(template_path, context = self),这样它就有一个默认布局。

Sir*_*ame 5

既然你用 Sinatra 标记了它,我假设你是我们 Sinatra。

默认情况下,您的视图以名为 layout.erb 的默认布局呈现

get "/" do
   erb :index
end
Run Code Online (Sandbox Code Playgroud)

这将使用默认布局呈现您的视图索引。

如果您需要多个布局,您可以指定它们。

get "/foo" do
   erb :index, :layout => :nameofyourlayoutfile
end
Run Code Online (Sandbox Code Playgroud)

* 如果您不使用 Sinatra,您可能想从那里借用代码。