Question

(Ruby noob) I'm using nanoc to generate a site. Here is my sample page with metadata:

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

test

I know that I can have parameters one level up but I want to access them in layout file:

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

but I got following error:

undefined method `[]' for nil:NilClass

Parameters are passed to layout because when I do:

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

I can see them. As a Ruby noob I think there's a simple solution to my problem. Also, if you could post a snippet iterating through :parameters hash I would be grateful.

Was it helpful?

Solution

You probably have more than one page on your site. Therefore parameters does not exist in the layout for every page nanoc processes. For some pages the element will be nil and hence the error you get.

Perhaps you need to rethink how you want to use those parameters, or then you need a conditional in your layout to look for parameters and only use them when they are present:

<% if @item[:parameters] %>
 <%= @item[:parameters][:abc] %>
<% end %>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top