使用Jbuilder将所有记录的一个属性合并到数组中

时间:2016-10-07 21:07:53

标签: ruby-on-rails jbuilder

我有一系列产品,每个都有has_many标签。我想组合所有标签的名称,以便我有一个所有标签名称的数组。

期望的输出:

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

只需从每个标记中提取标记名称即可!

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

如果tag是关系,则可以使用pluck代替

来提高效率
json.array! @products do |product|
    json.title product.title
    json.tags product.tags.pluck(:name)
end