【问题标题】:Can I inherit an erb template?我可以继承erb模板吗?
【发布时间】:2011-01-21 23:37:34
【问题描述】:

有没有办法让一个模板继承另一个模板?我没有使用 Rails。

【问题讨论】:

  • 当您从另一个模板继承时,您期望发生什么?您希望如何覆盖模板或其中的一部分?
  • 像其他模板一样。例如,部分可能对所有部分都是通用的,例如页脚和页眉。
  • 请详细说明您要完成的工作

标签: ruby inheritance sinatra erb


【解决方案1】:

我也很喜欢 django 模板继承,但至少在 sinatra 中不可用。

sinatra book 解释了如何使用layout.erb 定义标准页面布局:

你只需要定义一个views/layout.erbfile 类似:

<html>
  <head>..</head>
  <body>
    <%= yield %>
  </body>
</html>

然后使用 erb :index 调用您的 erb 模板。 Sinatra 将渲染这两个模板并将索引模板的内容包含在 layout.erb 渲染的结果中。

【讨论】:

【解决方案2】:

您要查找的是partialslayouts。您可以将布局定义为具有全局设计内容(您的 CSS 和 javascript 包括、页眉和页脚等)的页面的容器。在此视图中,您可以将 yield 到另一个模板,并且该模板可以呈现 partials .

【讨论】:

  • 在 rails 中是这样,但是在不在 rails 中时,erb 中也是这样吗?
  • 没有。 Rails 会为您处理这些方法。但是,您可以查看 ActionController 的 rails 源代码,因为它包含适当的方法,您可以包含所需的模块,也可以自己实现它们。
  • 是的,我知道他们,但不幸的是我没有使用 Rails。我是 Sinatra 的人 :)
【解决方案3】:

不,您不能继承 erb 模板 - 它不是一个类。它只是一个文件。

编辑:

根据@Dan的评论,我看了一下Django模板继承,它看起来很像Railscontent_for。但是我不知道如何在 Rails 之外使用它。在第 3.2 和 3.3 点查看 herehere

【讨论】:

  • 我认为你根本没有回答这个问题。如果你对 Django 模板有任何经验,你就会明白他想问什么。
【解决方案4】:

现在有框架 Rango,第一个具有模板继承的 Ruby 框架,以及从中提取的与框架无关的 template inheritance gem。

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多