2016-10-07 6 views
1

私は、それぞれhas_manyというタグを持つ商品のコレクションを持っています。私はすべてのタグ名の配列を持つように、すべてのタグの名前を組み合わせたいと思います。Jbuilderを使用してすべてのレコードの1つの属性を配列に結合します

所望の出力:

{ 
    "title": "Product1", 
    "tags": ["name1", "name2", "name3"] 
} 

私の現在のJBuilderは私を与えている:

{Products: [{ 
    "title": "Product1", 
    "tags":[ 
     {"tag1": 
      {"name": "name1"} 
     }, 
     {"tag2": 
      {"name": "name2"} 
     }, 
     {"tag3": 
      {"name": "name3"} 
     } 
     ] 
}]} 

私の現在のJBuilder。

json.array! @products do |product| 
    json.title product.title 
    json.tags product.tags do |tag| 
     json.name tag.name 
    end 
end 

ありがとうございました!

+0

あなたはjson.tagsは 'do'ブロックせずにproduct.tags''試したことがありますか? – SteveTurczyn

+0

まだネストされたタグオブジェクトを取得します。基本的には、json.tagsと同じになるようにタグ名だけの配列が必要です。 – juruz

+0

OK、おそらく 'json.tags product.tags.map(&:name)'を試してください。 – SteveTurczyn

答えて

1

各タグからタグ名を抽出するだけです!

json.array! @products do |product| 
    json.title product.title 
    json.tags product.tags.map(&:name) 
end 

タグが関係あるならば、あなたはpluckを使用して、これは、より効率的に行うことができます代わりに

json.array! @products do |product| 
    json.title product.title 
    json.tags product.tags.pluck(:name) 
end 
+0

ありがとうございます!私が捜していたものが駄目です! – juruz

関連する問題