nil的未定义方法`[]':尝试在nanoc中显示元数据时为NilClass

时间:2013-01-15 17:54:16

标签: ruby erb nanoc

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

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

test

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

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

但我收到了以下错误:

undefined method `[]' for nil:NilClass

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

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

我可以看到他们。作为Ruby noob,我认为我的问题有一个简单的解决方案。此外,如果您可以发布一个代码片段迭代:参数哈希,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

您的网站上可能有多个页面。因此,每个页面nanoc进程的布局中不存在parameters。对于某些页面,元素将为nil,因此会出现错误。

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

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