【发布时间】:2019-02-07 16:16:22
【问题描述】:
关于 SO 的大多数问题似乎都已经过时,无法解决这个问题。
我想序列化一个模型。 这是我的序列化程序的样子 -
class AssignmentSerializer < ActiveModel::Serializer
belongs_to :lesson, class_name: "Lesson"
attributes :id, :student_id, :tutor, :name, :start_date, :end_date, :description, :lesson
end
这对于您想以这种形式序列化单个对象的情况非常有效。
def index
if current_user&.student?
@assignments = Assignment.where(student_id: current_user.id)
@assignments_due = Assignment.find_due(current_user)
@submitted_assignments = Assignment.find_submitted(current_user)
elsif current_user&.tutor?
@assignments = Assignment.where(tutor_id: current_user.id)
end
respond_to do |format|
format.json { render json: @assignments }
end
end
但是当我想像这样序列化多个对象时不起作用:
def index
if current_user&.student?
@assignments = Assignment.where(student_id: current_user.id)
@assignments_due = Assignment.find_due(current_user)
@submitted_assignments = Assignment.find_submitted(current_user)
elsif current_user&.tutor?
@assignments = Assignment.where(tutor_id: current_user.id)
end
respond_to do |format|
format.json { render json: {
assignments: @assignments,
assignments_due: @assignments_due,
submitted_assignments: @submitted_assignments
}, each_serializer: AssignmentSerializer
}
end
end
我按照在documentation 中看到的不同方法尝试了多种方法,但似乎都没有。
知道我做错了什么吗?
按照答案和评论中的建议尝试更新,但这种方法不起作用。尝试使用和不使用 each_serializer 键
respond_to do |format|
format.json { render json: {
assignments: @assignments.as_json,
assignments_due: @assignments_due.as_json,
submitted_assignments: @submitted_assignments.as_json
}, each_serializer: AssignmentSerializer
}
end
【问题讨论】:
-
你试过用
@assignments.as_json吗? -
尝试了 as_json 与 each_serializer 和没有它,仍然没有工作。
标签: ruby-on-rails active-model-serializers