3

(Ruby noob) nanoc を使用してサイトを生成しています。メタデータを含む私のサンプルページは次のとおりです。

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

test

パラメータを 1 つ上のレベルに設定できることはわかっていますが、レイアウト ファイルでそれらにアクセスしたいと考えています。

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

しかし、次のエラーが発生しました:

undefined method `[]' for nil:NilClass

パラメータがレイアウトに渡されるのは、次の場合です。

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

私はそれらを見ることができます。Ruby初心者として、私の問題には簡単な解決策があると思います。また、:parameters ハッシュを反復処理するスニペットを投稿していただければ幸いです。

4

1 に答える 1

3

おそらく、サイトには複数のページがあります。したがってparameters、すべてのページ nanoc プロセスのレイアウトには存在しません。一部のページでは、要素が になるnilため、エラーが発生します。

おそらく、これらのパラメーターをどのように使用するかを再考する必要があるか、レイアウトで条件を探してparameters、それらが存在する場合にのみ使用する必要があります。

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