Ruby on Rails - Render JSON for multiple models Ruby on Rails - Render JSON for multiple models json json

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.


A controller can only return one response. If you want to send all these objects back, you have to put them in one JSON object.

How about:

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 }  endend


I did something like

respond_to do |format|      format.html # show.html.erb      format.json { render :json => {:cancer_type => @cancer_type, :cancer_symptoms => @cancer_symptoms }}

here is the result

{"cancer_type":{"created_at":"2011-12-31T06:06:30Z","desc":"dfgeg","id":2,"location":"ddd","name":"edddd","sex":"ddd","updated_at":"2011-12-31T06:06:30Z"},"cancer_symptoms":[]}

So it is working

Thank you guys