Chef databags中的哈希数组?

时间:2017-08-28 18:47:12

标签: chef databags

我正在尝试在chef databag项中包含hash-of-hash数据。这支持吗?我一直收到有关未定义方法的错误消息。这是一个例子:

Databag项目:

{
        "id": "BurgerKing",
        "sandwich": "Whopper",
        "nickname": "BK",
        "value_meals":[
                {
                "sandwich":  "Big King",
                "side": "Fries",
                "drink": "Coke"
                },
                {
                "sandwich": "Kids Burger",
                "side": "Apple Slices",
                "drink": "Milk"
                }
        ]
}

模板:

<!-- I want to go to <%= @restaurant[ 'nickname' ] %> to get a <%= @restaurant['sandwich'] %>. -->
<!-- But there are also value meals... -->
<% @restaurant.value_meals.each do | meal | %>
<!-- <%= meal.sandwich %>, <%= meal.side %>, and <%= meal.drink %> -->
<% end -%>

如果我只访问三明治和昵称字段,我很高兴,但只要我添加代码来迭代value_meals,我就会得到:

Chef::Mixin::Template::TemplateError (undefined method `value_meals' for #<Chef::DataBagItem:0x00000002d07df0>) on line #6:

  4: <!-- I want to go to <%= @restaurant[ 'nickname' ] %> to get a <%= @restaurant['sandwich'] %>. -->
  5: <!-- But there are also value meals... -->
  6: <% @restaurant.value_meals.each do | meal | %>
  7: <!-- <%= meal.sandwich %>, <%= meal.side %>, and <%= meal.drink %> -->
  8: <% end -%>

提前致谢!!!

感谢CodeRanger !!!

添加下面的内容,修改了它,因为我显然还没有格式化评论的诀窍。

<!-- But there are also value meals... -->
<% @restaurant['value_meals'].each do | meal | %>
<!-- <%= meal[ 'sandwich' ] %>, <%= meal[ 'side' ] %>, and <%= meal[ 'drink' ] %> -->
<% end -%>

1 个答案:

答案 0 :(得分:1)

您在Ruby中访问哈希的方式是[]语法,因此@restaurant['value_meals'].eachmeal['side']