我正在为我的API使用active-model-serializers。 我有一个模型(任务)有许多子任务(总是任务模型),称为子项。 由于祖先gem(https://github.com/stefankroes/ancestry)
,我做了这个递归的has_many关联它运作得很好,但我有这个问题: 任务与用户关联,但在活动模型序列化程序中,导出主对象的用户时,它也不会显示所有子项的用户详细信息。 这是我的序列化器:
class TaskSerializer < ActiveModel::Serializer
attributes :id, :name, :details, :user_id
belongs_to :user
has_many :children
end
这是我的控制者:
class Api::V1::TasksController < Api::V1::BaseController
respond_to :json
def index
@tasks = current_user.company.tasks
respond_with @tasks, location: nil
end
end
这是我的模特:
class Task < ActiveRecord::Base
has_ancestry
belongs_to :user
end
我也试图在我的模型中这样做:
class Api::V1::TasksController < Api::V1::BaseController
respond_to :json
def index
@tasks = current_user.company.tasks
render json: @tasks,
each_serializer: TaskSerializer,
status: :ok
end
end
但是不起作用......我已经为父对象提供了用户详细信息,但没有给孩子们(他只显示user_id,没有所有User对象)
有什么建议吗?
答案 0 :(得分:2)
您是否尝试为Children模型添加序列化程序或将其作为显式属性查询?
var ajax1Complete=false;
$.when(
$.ajax({
url: 'newphp.php',
type: "POST",
beforeSend: function() {
$('#loadinimg').foundation('reveal', 'open');
},
error: function(data){
},
success: function(response){
alert(response);
console.log(response);
ajax1Complete=true;//set it on success
},
complete: function() {
//close the loading image
}
})).done(function(){
if(ajax1Complete)
{
//make another ajax call here and onsuccess set ajax1Complete to false
}
});