【问题标题】:How to make a layout template in Sinatra?如何在 Sinatra 中制作布局模板?
【发布时间】:2011-05-10 13:42:03
【问题描述】:

我是 Sinatra 的新手,我不知道在哪里放置我的应用程序布局。

我见过使用

的内联方法
# app code    
__END__

@@layout
  %html
    = yield

但我希望布局在它自己的 .haml 文件中。

布局文件应该怎么命名?应该放在什么目录下?

【问题讨论】:

    标签: templates layout sinatra


    【解决方案1】:

    如果您还没有创建一个文件夹,您的 sinatra 脚本所在的文件夹名为...

    views/
    

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

    layout.haml
    

    或您想使用的任何扩展名(例如.erubis)。

    【讨论】:

      【解决方案2】:

      自动包装

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

      跳过布局

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

      get '/' do
         # Other pages will use layout.haml, but not the main page
         haml :home, :layout => false
      end
      

      使用不同的布局

      如果您想使用通用布局以外的布局,请创建另一个文件(例如 views/admin_layout.haml),然后将其作为选项传递:

      get '/admin/create' do
         haml :create, :layout => :admin_layout
      end
      

      【讨论】:

      • 我在使用布局选项时收到此错误undefined local variable or method `layout' for ,请帮助我
      • 如果我将`-`改为下划线`_`即admin_layout,请看stackoverflow.com/questions/11190208/…
      • @pahnin 我的错;谢谢你指出这一点。如果你做了:layout => :"admin-layout",FWIW if 应该可以工作,但最好简单地使用一个易于表示为符号文字的名称。我已经更新了我的答案。
      猜你喜欢
      • 2014-06-03
      • 2012-06-22
      • 1970-01-01
      • 2013-07-05
      • 2018-02-20
      • 2013-06-17
      • 2017-07-24
      • 2011-05-24
      • 1970-01-01
      相关资源
      最近更新 更多