He buscado y no he podido encontrar una solución para este tipo de mecánico. Quiero cargar todas las páginas normalmente en Rails, pero cada vez que hago una solicitud de Ajax solo quiero devolver la página sin el diseño. Entonces, cada vez que hago un ajax, puedo adjuntar un ?page=true
o algo así y hacer que Rails devuelva la página sin el diseño.Los rieles impiden el diseño durante la solicitud de AJAX
¿Esto es posible? ¿Hay una mejor manera de hacerlo que me estoy perdiendo?
¡Gracias por cualquier ayuda!
Código de Trabajo solución final:
En el controlador de todo lo que tiene que hacer es añadir un poco de lógica a la format.html
en el bloque respond_to
.
En el método show
por ejemplo
def show
# code beforehand
respond_to do |format|
format.html { render :layout => !request.xhr? }
# other formats
end
end
Y eso es todo! ¡Prevenga los diseños durante las solicitudes de AJAX!
Nota: Gracias al comentario de smathy sobre su respuesta, esto se simplificó aún más. Originalmente tenía format.html { render :layout => nil if request.xhr? }
Esta solución funciona igual de bien, pero la modificación de smathy lo hace aún más simple.
¿Es posible hacer lo mismo en el controlador de la aplicación para cada solicitud de Ajax? –
posible duplicado de [Nunca renderizar un diseño en respuesta a xhrs] (http://stackoverflow.com/questions/2444866/never-render-a-layout-in-response-to-xhrs) – fivedigit