我正在使用中间人工作静态网站,并尝试使用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文件夹。 我对此感到非常感激,因为我发现文档或支持中间人数据功能的方式并不多。
答案 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>