RubyとRailsの新機能です。ハッシュの配列を作成する必要があるという状況に苦しんでいます。コードの下に参照してください:ここでは配列内にハッシュをマージする
def self.v_and_c items
result = []
items.try(:each) do |item|
result << item
if item.is_parent_variation
check_ancestor item
result << { :item_variation => @variations }
result << { :options => @options }
elsif item.is_parent_customization
check_ancestor item
result << { :customizations => @customizations }
result << { :ingredients => @ingredients }
end
end
result
end
は、関数の出力です:
{"items":[{"id":1,"name":"Cake"},{"item_variation":null},{"options":null}]}
しかし、私はこのようにやってみたかったです。 、ループの各反復のために :
def self.v_and_c items
result = []
items.try(:each) do |item|
item_hash = {}.merge(item)
if item.is_parent_variation
check_ancestor item
item_hash.merge!({ item_variation: @variations }).merge!({ options: @options})
elsif item.is_parent_customization
check_ancestor item
item_hash.merge!({ customizations: @customizations }).merge!({ ingredients: @ingredients})
end
result.push(item_hash)
end
result
end
説明:
{"items":[{"id":1,"name":"Cake","item_variation":null, "options":null} ]}
あなたの迅速な応答に感謝し、実際にいくつかの時間がcheck_ancestor機能は、条件ごとに呼び出していません。 –
item_hash = {} .merge(item) - >これはitem_hash = {} .merge(item:item)に変更されているのでエラーを生成しています。そうでなければ、Itemをハッシュに暗黙的に変換しないエラーが発生します。 –
アイテムをハッシュと仮定しました。私の悪い。 –