Reputation: 93
I have an web application maded in RoR. I need to provide the json to an mobile App. This is my code to generate the Json:
json.category do
json.name monument.category.name
json.monumento do
json.name monument.name
json.id monument.id
json.pois monument.pois do |p|
json.name p.name
end
end
end
The output is:
{
"category": {
"name": "Igrejas",
"monumento": {
"name": "Igreja de Santa Maria do Olival",
"id": 2,
"pois": [{
"name": "Igreja de Santa Maria do Olival"
}]
}
}
},
{
"category": {
"name": "Igrejas",
"monumento": {
"name": "Igreja de São João Baptista",
"id": 3,
"pois": [{
"name": "Igreja de São João Baptista"
}]
}
}
},
{
"category": {
"name": "Igrejas",
"monumento": {
"name": "Igreja da Nossa Senhora da Graça",
"id": 4,
"pois": [{
"name": "Igreja da Nossa Senhora da Graça"
}]
}
}
},
My Problem is that i need to group the categories.
something like this:
{
"category": {
"name": "Igrejas",
"monumento": {
"name": "Igreja de Santa Maria do Olival",
"id": 2,
"pois": [{
"name": "Igreja de Santa Maria do Olival"
}]
},
"monumento": {
"name": "Igreja de São João Baptista",
"id": 3,
"pois": [{
"name": "Igreja de São João Baptista"
}]
},
"monumento": {
"name": "Igreja da Nossa Senhora da Graça",
"id": 4,
"pois": [{
"name": "Igreja da Nossa Senhora da Graça"
}]
}
}
},
Any ideas how can i solve this problem?
Upvotes: 2
Views: 671
Reputation: 6121
You need to do something like this
In your controller,
@categories = Category.where(name: 'Igrejas').includes(monuments: :pois)
In your view,
json.category @categories do |category|
json.name category.name
json.monuments category.monuments do |monument|
json.name monument.name
json.id monument.id
json.pois monument.pois do |p|
json.name p.name
end
end
end
Upvotes: 4