我创建了一个后端rails服务器,它严格地为我构建的iOS应用程序提供服务。初次加载iOS应用程序时,需要立即提取大约十几个模型及其数据。我想避免1)十几个单独的服务器调用和b)在完成块中链接十几个调用。 I.E.呼叫A,当A完成时,呼叫B,当B完成时,呼叫C ......等等。
我想制作一个Load资源。在一次调用中将返回所有十几个模型的数据的东西。所以生成的json就像......
{
"widgets": [
{
"id": 1,
"desc": "One"
},
{
"id": 2,
"desc": "Two"
}
],
"gadgets": [
{
"id": 1,
"desc": "One"
}
],
"flidgets": [
{
"id": 1,
"desc": "One"
}
]
}
我也更喜欢不包含时间戳。
我该怎么做?假设我创建了一个新的控制器,InitialLoadController。然后我得到了十几个对象的模型数据。如何将十几个模型渲染为json并将其格式化为这样?
答案 0 :(得分:0)
请检查以下代码:
class InitialLoadsController < ApplicationController
def load
widgets = Widget.select(:id, :desc)
gadgets = Gadget.select(:id, :desc)
flidgets = Flidget.select(:id, :desc)
response = {
widgets: widgets,
gadgets: gadgets,
flidgets: flidgets
}
render json: response
end
end
即使您可以使用jbuilder渲染json响应(作为渲染json:response的替代方法)。
答案 1 :(得分:0)
假设您有可以在代码下方使用的仪表板操作,以从多个模型返回json数据。
def dashboard
@widgets = Widget.all
@gadgets = Gadget.all
@flidgets = Flidget.all
respond_to do |format|
format.json {
render :json => {
:widgets => @widgets.to_json(:except => [:created_at,:size]),
:gadgets => @gadgets.to_json(:except => [:created_at,:type]),
:flidgets => @flidgets.to_json(:except => [:created_at,:type])
}
}
end
end
注意: - @ widgets.to_json(:except =&gt; [:created_at,:type]) 这将返回没有字段 created_at 和类型
的json