Передача переменной из содержимого в макет в Nanoc с помощью Slim - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу знать, как проще всего передать переменную ruby ​​со страницы содержимого в ее макет с помощью Nanoc и Slim.Я думаю о чем-то вроде этого:

content / content.slim:

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

layout / layout.slim:

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

Я знаю, как получить доступ к значениямчерез frontmatter, но значения frontmatter фиксированы, и мне нужна функция ruby, чтобы найти это значение для меня.

1 Ответ

0 голосов
/ 12 декабря 2018

Nanoc предоставляет помощник захвата , который позволяет «захватывать» контент в одном месте и использовать его в другом месте.

content / content.slim:

---
title: Mister Tree
---

p Hello there!

- content_for :age
  | hundreds of years

layout / 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>
...