2

我正在使用中间人处理静态站点,并尝试使用 mm 的本地数据功能。

目前,我在中间人项目的源目录中有所需的数据目录。

数据目录里面是一个yaml文件(home.yml)

这是文件的结构:

slides:
    - image: "/img/slider/slide1.jpg"
      image_alt: "Slide 1 alt text"
      caption: "Slide 1 caption"

    - image: "/img/slider/slide2.jpg"
      image_alt: "Slide 2 alt text"
      caption: "Slide 2 caption"

然后,我尝试在 html.erb 文件中循环浏览这些幻灯片,如下所示:

<%= data.home.slides.each do |s| %>

    <figure class="slide">

        <%= image_tag(s[:image], alt: s[:image_alt]) %>

        <figcaption><%= s[:caption] %></figcaption>

    </figure>

<% end %>

但是中间人在编译的 html 文件上吐了一个 NoMethodError 。

#<Middleman::CoreExtensions::Data::DataStore:0x4383918> 的未定义方法“home”

我不知道我做错了什么。我尝试将数据目录移动到源文件夹之外的一个级别,但没有任何效果。

似乎中间人无法识别数据目录中的 home.yml 文件夹。对此的任何帮助都非常感谢,因为我发现文档或对中间人数据功能的支持并不多。

4

1 回答 1

1

你非常接近 - 你只是有一个小错字。请注意我如何删除等号“=”符号。

更改此行:

<%= data.home.slides.each do |s| %>

对此:

<% data.home.slides.each do |s| %>

完成后应生成以下标记:

<figure class="slide">
    <img alt="Slide 1 alt text" src="/img/slider/slide1.jpg">
    <figcaption>Slide 1 caption</figcaption>
</figure>

<figure class="slide">
    <img alt="Slide 2 alt text" src="/img/slider/slide2.jpg">
    <figcaption>Slide 2 caption</figcaption>
</figure>
于 2013-02-09T04:03:56.087 回答