一尘不染

Ruby on Rails-为多个模型渲染JSON

json

我正在尝试从JSON中的多个模型中呈现结果。我的控制器中的以下代码仅呈现第一个结果集:

  def calculate_quote
    @moulding = Moulding.find(params[:id])
    @material_costs = MaterialCost.all

    respond_to do |format|
      format.json  { render :json => @moulding }
      format.json  { render :json => @material_costs }
    end
  end

任何帮助将不胜感激,谢谢。


阅读 169

收藏
2020-07-27

共1个答案

一尘不染

一种执行此操作的方法是使用您要渲染的对象创建一个哈希,然后将其传递给render方法。像这样:

respond_to do |format|
  format.json  { render :json => {:moulding => @moulding, 
                                  :material_costs => @material_costs }}
end

如果未通过活动记录关联模型,则可能是最好的解决方案。

如果存在关联,则可以将:include参数传递给render调用,如下所示:

respond_to do |format|
  format.json  { render :json => @moulding.to_json(:include => [:material_costs])}
end

请注意,@material_costs如果采用这种方法,则不必在上一节中检索变量,Rails将从@moulding变量中自动加载它。

2020-07-27