未定义的方法MiddlemanCore数据

时间:2013-02-09 03:40:58

标签: erb middleman

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

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

数据中的directroy是一个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。

#&lt; Middleman :: CoreExtensions :: Data :: DataStore:0x4383918&gt;

的未定义方法`home'

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

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

1 个答案:

答案 0 :(得分: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>