2017-08-28 12 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

ありがとうございます!それを次のように変更しました:<! - しかし値段の食事もあります - > <%@レストラン['value_meals']。食事| %>食事['サイド']%>、<%=食事['飲み物']%> - > <% end -%> <%=食事['サンドウィッチ']%>、<%=食事['飲み物']%> それはチャンピオンのように働いた!ひどい書式設定のためのお詫び... –

関連する問題