Slim模板语言中的继承

0 ruby ruby-on-rails sinatra slim-lang

使用Twig的PHP,我可以这样做:

layout.twig

<html>
<body>
{% block content %}{% endblock %}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

form.twig

{% extends "layout.twig" %}
{% block content %}
<div class="form">{% block form %}{% endblock %}</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

login.twig

{% extends form %}
{% block form %}
<form>
    <input type="text" name="email" />
    <input type="submit">
</form>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

这样我就有了所有页面的布局,一个带有表单和登录页面的页面布局.

但是使用Slim我只能指定所有模板的父布局:

layout.slim

html
  body ==yield
Run Code Online (Sandbox Code Playgroud)

和我网站上每个页面的特殊布局:
login.slim

div.form
  form
    input type="text" name="email"
    input type="submit"
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以在Slim中实现具有多个级别的类似Twig的继承?

小智 7

看起来我找到了Slim与Sinatra的解决方案:

layout.slim

html
  body
    == yield
Run Code Online (Sandbox Code Playgroud)

form.slim

== slim :layout
  div.form
    == yield
Run Code Online (Sandbox Code Playgroud)

login.slim

== slim :form
  form
    input type="text" name="email"
    input type="submit"
Run Code Online (Sandbox Code Playgroud)