массив хэшей в бэгах данных Chef?

Я пытаюсь включить данные массива хэшей в элемент базы данных шеф-повара. Это поддерживается? Я продолжаю получать сообщения об ошибках о неопределенном методе. Вот пример:

Элемент в базе данных:

{
        "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 -%>

person Andrew Campbell    schedule 28.08.2017    source источник


Ответы (1)


Доступ к хэшам в Ruby осуществляется через синтаксис [], поэтому @restaurant['value_meals'].each и meal['side'].

person coderanger    schedule 28.08.2017
comment
Спасибо!!! Изменил его на:‹!-- Но есть и недорогие блюда... --› ‹% @restaurant['value_meals'].each do | еда | %› ‹!-- ‹%= еда[ 'бутерброд' ] %›, ‹%= еда[ 'гарнир' ] %› и ‹%= еда[ 'напиток' ] %› --› ‹% end -% › и это сработало как чемпион! Извиняюсь за паршивое форматирование... новичок в SO. - person Andrew Campbell; 28.08.2017