3

(Ruby noob)我正在使用 nanoc 生成一个站点。这是我的带有元数据的示例页面:

--- 
title: abc
parameters:
    abc: def
    ghi: ijk
---

test

我知道我可以将参数提高一级,但我想在布局文件中访问它们:

<%= @item[:parameters][:abc] %>

但我收到以下错误:

undefined method `[]' for nil:NilClass

参数被传递给布局,因为当我这样做时:

<%= YAML::dump(@item[:parameters]) %>

我可以看到他们。作为一个 Ruby 菜鸟,我认为我的问题有一个简单的解决方案。另外,如果您可以发布一个通过 :parameters hash 迭代的片段,我将不胜感激。

4

1 回答 1

3

您的网站上可能有多个页面。因此parameters在布局中不存在每个页面的 nanoc 工艺。对于某些页面,元素将是nil,因此您会得到错误。

也许您需要重新考虑如何使用这些参数,或者您需要在布局中使用条件来查找parameters并仅在它们存在时使用它们:

<% if @item[:parameters] %>
 <%= @item[:parameters][:abc] %>
<% end %>
于 2013-01-15T18:41:29.327 回答