En mi aplicación Rails tengo una acción que crea un documento XML utilizando una plantilla de Plantilla de Generador XML (rxml
) y render_to_string
. El documento XML se reenvía a un servidor backend.¿Cómo renderizar una vista normalmente después de usar render_to_string?
Después de crear el documento XML, quiero enviar una respuesta HTML normal al navegador, pero de alguna manera Rails está recordando la primera llamada al render_to_string
.
Por ejemplo:
- Carriles no puede encontrar la vista predeterminada
show.html.erb
porque busca unshow.rxml
. - Simplemente poniendo un
render 'mycontroller/show.html.erb'
en la parte inferior de mi controlador de acción hace que Rails encuentre la plantilla, pero el navegador no funciona porque el tipo de contenido del encabezado de respuesta estext/xml
.
¿Hay alguna forma de utilizar render_to_string
sin "manchar" la respuesta del navegador real?
EDIT: Parece que en Rails 2 erase_render_results
haría el truco, pero en Rails 3 ya no está disponible.
En realidad, 'erase_render_results' solo establece una bandera en falso y borra el response_body - en la fuente de render_to_string, el tipo de contenido se establece explícitamente en nil. Parece más probable que se deba al problema que has encontrado. –