使用Slim将变量从内容传递到Nanoc中的布局

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Slim将变量从内容传递到Nanoc中的布局相关的知识,希望对你有一定的参考价值。

我基本上想知道使用Nanoc和Slim将ruby变量从内容页面传递到其布局的最简单方法。我在考虑这样的事情:

内容/ content.slim:

---
title: Writeups
layout: /layout.slim
---
- age = get_age

布局/ layout.slim:

doctype html
  html
    head
      == yield
      p I am #{@item[:title]} and am #{@item[:age]} years old

我知道如何通过frontmatter访问值,但是frontmatter值是固定的,我想要的是一个ruby函数来为我找到该值。

答案

Nanoc提供了capturing helper,可以在一个地方“捕获”内容并在其他地方使用它。

内容/ content.slim:

---
title: Mister Tree
---

p Hello there!

- content_for :age
  | hundreds of years

布局/ layout.slim:

doctype html
html
  body
    == yield
    p I am #{@item[:title]} and am #{content_for(@item, :age)} years old

lib / default.rb(或您选择的lib /中的任何文件):

use_helper Nanoc::Helpers::Capturing

这会生成以下输出:

<!DOCTYPE html>
<html>
  <body>
    <p>Hello there!</p>
    <p>I am Mister Tree and am hundreds of years years old</p>
  </body>
</html>

以上是关于使用Slim将变量从内容传递到Nanoc中的布局的主要内容,如果未能解决你的问题,请参考以下文章

将变量从视图传递到布局的局部视图

将变量插入到从不同目录声明的 .html.slim 文件中

通过 Ajax 调用将变量传递给控制器

将模板变量从 URL 传递到 Django 中的 FormPreview

将任意数据从局部视图传递到布局视图

如何将值从页面传递到 Blazor 中的布局?