2017-08-28 105 views
1

我想將散列數據包含在廚師數據庫項目中。這是否支持?我不斷收到有關未定義方法的錯誤消息。這裏有一個例子:廚師數據包中有數組嗎?

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

訪問哈希在Ruby中的方法是通過[]語法,所以@restaurant['value_meals'].eachmeal['side']

+0

謝謝!修改爲:<! - 但也有價值餐...... - > <%@restaurant ['value_meals']。餐| %> <% end -%> <%= meal ['sandwich']%>,<%= meal ['side']%>%>>%> 它像一個冠軍一樣工作!對糟糕的格式化抱歉......對於新的格式。 –