rails index descargar ruby-on-rails-3 json jbuilder

ruby-on-rails-3 - index - render json rails 5



Renderizar una vista JBuilder en vista html (1)

He creado una vista json con JBuilder. Pero quiero precargar esto en un objeto de datos, para que Backbone tenga acceso a los datos desde el principio sin buscarlos.

¿Cómo puedo representar la vista list.json.jbuilder en mi vista list.html.erb?

Normalmente sin jbuilder, haría algo como esto:

<div data-list="<%= @contents.to_json %>"></div>


render , cuando se llama desde dentro de una vista, devuelve una representación de cadena de la plantilla pasada o parcial; puedes insertar esa cadena en tu vista como quieras. Tenga en cuenta que

  • Debe adjuntar el nombre de su plantilla con el sufijo / extensión de tipo. Si no lo hace, Rails puede confundirse sobre el archivo de plantilla que está llamando; es decir, podría elegir list.html.erb lugar de list.json.jbuilder . Si está haciendo esta llamada desde list.html.erb , al intentar representar list.html.erb obtiene una recursión infinita y un SystemStackError. Usar la opción de :format para render no parece funcionar.
  • Tienes que especificar la ruta calificada a la plantilla; no encontrará la plantilla correcta para "list.json" solo porque list.json.jbuilder reside en el mismo directorio que list.html.erb .
  • Debe pasar la salida de la llamada de render a través de raw ; de lo contrario, se escapará cuando se incruste en la vista.

Entonces, para su ejemplo, puede escribir esto, asumiendo que sus plantillas estaban en /app/views/foo :

<div data-list="<%= raw render(:template => "foo/list.json", :locals => { :contents => @contents }) %>"></div>