Ruby on rails JSON未嵌套在rails视图中
我在继承权中有几个模型,1:每个级别都有很多。每个类仅与上面的类和下面的类关联,即: L1课程, 二级单位, L3单元布局, L4布局字段, L5表格字段(不是代码,而是布局字段的同级) 我试图构建整个层次结构的JSON响应Ruby on rails JSON未嵌套在rails视图中,ruby-on-rails,json,Ruby On Rails,Json,我在继承权中有几个模型,1:每个级别都有很多。每个类仅与上面的类和下面的类关联,即: L1课程, 二级单位, L3单元布局, L4布局字段, L5表格字段(不是代码,而是布局字段的同级) 我试图构建整个层次结构的JSON响应 def show @course = Course.find(params[:id]) respond_to do |format| format.html # show.html.erb format.json do
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
代码将返回正确的值,但是单位、单位布局和布局字段都嵌套在课程下的同一级别。我希望它们嵌套在其父级中。您需要与一起使用: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%正确,因为您没有包括所有关联的名称,但我假设
Unit
有许多布局。要包含更深层次的嵌套,请添加其他嵌套的:包含s.这是因为您在顶层使用每个集合构建它们。这就是response={:course=>@course,:units=>@units,:unit\u layouts=>@unit\u layouts,:layout\u fields=>@layout\u fields}
行所做的。您也不应该嵌套两个response\u到
块中。您也不应该在格式:json
块中重新找到课程。你已经在上面找到了它,你只需要一行@course=course.find(params[:id])
就可以了。嗨,米加,这正是我要找的。非常感谢您的时间和多个帖子。它工作得很好。