Ruby on Rails怎么为多个模型呈现JSON?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (39)

我正尝试从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
提问于
用户回答回答于

你可以做到这一点的一种方法是与你想渲染的对象一起创建一个散列,然后把它传递给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
用户回答回答于

控制器只能返回一个响应,

所以这样:

def calculate_quote
  @moulding = Moulding.find(params[:id])
  @material_costs = MaterialCost.all
  response = { :moulding => @moulding, :material_costs => @material_costs }
  respond_to do |format|
    format.json  { render :json => response }
  end
end

扫码关注云+社区