我正在使用带有Ruby 2.1.5的rails 4.2
我创建了两个表1.API(name:string)和2.Description(key:string,value:string)。对于关系,API has_many Datas。
以下是我对JSON格式的返回数据的控制器的索引操作。
def show
@api = Api.find(params[:id])
@descriptions = @api.descriptions.all
data = {}
@descriptions.each do |f|
data[f.key] = f.value
end
render json: data, :except => [:created_at, :id, :api_id ]
end
它可能会返回JSON中的数据,如:
{
"country":"USA"
"City":"NY"
}
我的问题是如何获取如下数据(多个JSON数据)。
{
"country":{
"Taiwan":"Taipei",
"China":"Hong Kong",
"England":"Londan"
},
"password_type":"known",
"password":"123456"
}
我应该如何重新设计数据库或以其他方式?
答案 0 :(得分:0)
我建议为此实现模板处理程序。 Ryan Bates录制了一个精彩的截屏视频,请查看:Railscasts PRO #379 Template Handlers(还有一个关联的github repo,带有示例应用here)。
考虑到这一点,您只需结束一个呈现json.rb
模板的控制器操作,其中包含以下技巧:
# app/views/apis/show.json.rb
def list_of_countries
@descriptions.inject({}) do |result, object|
result[object["country"]] = object["city"]
result
end
# => {"USA": "NY", "Great Britain": "London"}
end
{
country: list_of_countries,
password_type: @password_type # I assume you've set this up in controller
}.end.to_json
# {country: {"USA": "NY", "Great Britain": "London"}, password_type: "salt"}