Ruby on rails 如何从多个rails模型返回json数据?
我已经创建了一个后端rails服务器,它严格地为我构建的iOS应用服务。在首次加载iOS应用程序时,它需要立即输入十几个型号及其数据。我希望避免1)12个单独的服务器调用,以及b)将这12个调用链接到完成块中。即呼叫A,当A完成时,呼叫B,当B完成时,呼叫C。。。等等 我想制作一个加载资源。可以在一次调用中返回所有十几个模型的数据。因此,生成的json将类似于Ruby on rails 如何从多个rails模型返回json数据?,ruby-on-rails,json,Ruby On Rails,Json,我已经创建了一个后端rails服务器,它严格地为我构建的iOS应用服务。在首次加载iOS应用程序时,它需要立即输入十几个型号及其数据。我希望避免1)12个单独的服务器调用,以及b)将这12个调用链接到完成块中。即呼叫A,当A完成时,呼叫B,当B完成时,呼叫C。。。等等 我想制作一个加载资源。可以在一次调用中返回所有十几个模型的数据。因此,生成的json将类似于 { "widgets": [ { "id": 1, "desc"
{
"widgets": [
{
"id": 1,
"desc": "One"
},
{
"id": 2,
"desc": "Two"
}
],
"gadgets": [
{
"id": 1,
"desc": "One"
}
],
"flidgets": [
{
"id": 1,
"desc": "One"
}
]
}
我也希望不包括时间戳
我该怎么做?假设我创建了一个新的控制器InitialLoadController。然后我得到十几个对象的模型数据。我如何将十几个模型呈现为json并将其格式化为以下格式?请检查以下代码:
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
class InitialLoadsController
甚至您也可以使用jbuilder呈现json响应(作为呈现json:response的替代方案)。假设您有仪表板操作,您可以使用下面的代码从多个模型返回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=>[:created_at,:type])
这将返回json,但不包含在创建的字段和Rails在scaffolding中使用的类型。