0

我有几个模型在一个层次结构中,每个级别都是 1:many。每个类只与它上面的类和它下面的类相关联,即:

L1 课程、L2 单元、L3 单元布局、L4 布局字段、L5 表格字段(不在代码中,而是布局字段的兄弟)

我正在尝试构建整个层次结构的 JSON 响应。

def show
    @course = Course.find(params[:id])
    respond_to do |format|
      format.html # show.html.erb
      format.json do
        @course = Course.find(params[:id])
        @units = @course.units.all
        @unit_layouts = UnitLayout.where(:unit_id => @units)
        @layout_fields = LayoutField.where(:unit_layout_id => @unit_layouts)
        response = {:course => @course, :units => @units, :unit_layouts => @unit_layouts, :layout_fields => @layout_fields}
        respond_to do |format|
          format.json {render :json => response }
        end
      end
    end
  end

代码带回了正确的值,但是单元、unit_layouts 和 layout_fields 在课程中都嵌套在同一级别。我希望它们嵌套在它们的父级中。

4

1 回答 1

1

您需要使用to_jsonwith:include来包含关联的记录。

这是一个尝试:

@course = Course.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.json do
    render :json => @course.to_json(:include => { :units => { :include => :layouts } })
  end
end

这可能不是 100% 正确,因为您没有包括所有关联的名称,但我假设Unithas_many Layouts。要包含更深的嵌套,请添加额外的嵌套:includes。

于 2012-10-25T22:58:01.690 回答