2012-04-15 14 views
12

Tengo un modelo llamado List que has_many :entries. Como es habitual, los carriles 3 genera este método espectáculo para ListIncluir has_many resultados en REST JSON result

def show 
    @list = List.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @list } 
    end 
end 

¿Cómo puedo cambiar format.json para incluir los resultados de entries@list en la respuesta JSON así?

Sé que podría convertir @list en un hash, agregue el valor Hash de .entries a eso, luego renderice el hash, pero sospecho que Rails tiene un truco más elegante bajo la manga.

+1

'@List = List.Find (params [: id]). Une (: entradas)' –

Respuesta

21

Sí, hay una opción :include usted puede dar a to_json:

format.json { render json: @list.to_json(:include => :entries) } 
+2

Esto también funciona con múltiples modelos , por ejemplo: '@ list.to_json (: include => [: entries,: owners])' y es posible que desee optimizar su consulta SQL inicial utilizando include there también, por ejemplo: '@list = List.includes ([: entries,: owners]). find (params [: id]) ' – AJP

+1

sería mejor si usas' as_json' de esa manera, no va a stringificar la respuesta. –

Cuestiones relacionadas