Templates 如何在Sinatra中制作布局模板?

Templates 如何在Sinatra中制作布局模板?,templates,layout,sinatra,Templates,Layout,Sinatra,我是新来的Sinatra,我不知道把我的应用程序布局放在哪里 我见过使用 # app code __END__ @@layout %html = yield 但是我希望布局在它自己的.haml文件中 布局文件应命名为什么?它应该放在哪个目录中?如果您还没有,请创建一个名为 views/ 把你的布局放在那里,调用你的布局 layout.haml 或者您想要使用的任何扩展名(例如,.erubis)。自动包装 要使每个视图默认包装在布局中,请在views/layout.ha

我是新来的Sinatra,我不知道把我的应用程序布局放在哪里

我见过使用

# app code    
__END__

@@layout
  %html
    = yield
但是我希望布局在它自己的
.haml
文件中


布局文件应命名为什么?它应该放在哪个目录中?

如果您还没有,请创建一个名为

views/
把你的布局放在那里,调用你的布局

layout.haml
或者您想要使用的任何扩展名(例如,
.erubis
)。

自动包装 要使每个视图默认包装在布局中,请在
views/layout.haml
中创建一个文件,您对
haml:myview
的调用将自动包装在此布局中

跳过布局 如果希望特定视图渲染不使用布局,请使用:

get'/'do
#其他页面将使用layout.haml,但不使用主页
haml:home,:layout=>false
结束
使用不同的布局 如果要使用普通布局以外的布局,请创建另一个文件(例如
views/admin\u layout.haml
),然后将其作为选项传递:

get'/admin/create'do
haml:create,:layout=>:admin\u layout
结束

当我使用布局选项时,我得到了一个错误
未定义的局部变量或方法'layout',如果我将“-`改为下划线,请帮助我工作,即,
管理布局
请看@pahnin我的错误;谢谢你指出这一点。如果您使用了
:layout=>:“admin layout”
,则FWIW if应该可以工作,但最好使用易于表示为符号文字的名称。我已经更新了我的答案。