En mi aplicación actual de rieles estoy usando una biblioteca ajax uploader que requiere que respondas con json {success:true}
para indicar que un archivo se cargó correctamente.Rails JS Response, representa tanto el estado como la plantilla?
En mi aplicación, los archivos son imágenes y, después de cargarlas, me gustaría añadirlas a la página. Normalmente yo haría algo como:
respond_to do |format|
format.html { redirect_to @resource, :notice => 'Created.' }
format.js
end
En el ejemplo anterior mi respuesta JS haría que la plantilla adecuada, tal como create.js.erb
que podría decir algo como ...
$('#resources').append('<%= escape_javascript(render '@resource') %>');
Esta es la forma que tengo hecho cosas como comentarios de Ajax, etc. en el pasado. Ahora, para obtener el cargador de trabajo mi bloque respond_to
actualmente funciona esto:
format.js { render :json => { :success => true } }
Esto hace que el trabajo de cargador, pero me parece excluir la adición parciales prestados a la página como lo haría normalmente con una respuesta Ajax.
Mi pregunta es, ¿hay alguna manera de lograr ambas cosas? En caso negativo, ¿cómo llenarías la página con los objetos renderizados una vez que se hayan creado correctamente?
Esta idea funciona. No sabía sobre 'render_to_string', pero en las pruebas descubrí que también podía usar' .getScript' en la devolución de llamada para recuperar el parcial. Tu método es más limpio. ¡Gracias! – Andrew
Una nota ... por defecto 'escape_javascript' no está disponible para el controlador, y no es necesario porque el método' render: json' lo hace de todos modos. – Andrew
genial, me alegro de que ayude. Tiene sentido que 'escape_javascript' no funcione allí, no sé lo que estaba pensando. Gracias por los comentarios sobre la respuesta – danivovich