Ruby on Rails – Render JSON for multiple models

One way you could do this is to create a hash with the objects you want to render, and then pass that to the render method. Like so:

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

If the models aren’t associated through active record, that’s probably your best solution.

If an association does exist, you can pass an :include argument to the render call, like so:

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

Note that you wouldn’t have to retrieve the @material_costs variable in the section above if you take this approach, Rails will automatically load it from the @moulding variable.

Leave a Comment