Tengo una duda que llevo tiempo dándole vueltas y no he podido darle
solución.
En un controlador tengo:
def index
@articles = current_user.articles
respond_to do |format|
format.html # index.html.erb
format.xml { render :action => "articles.xml.builder", :layout =>
false }
end
end
En articles.xml.builder genero el XML utilizando XmlMarkup. Y ahora, en
las vistas, puedo crear algún enlace del tipo:
link_to “Descargar XML”, formatted_articles_path(:xml)
Pero esto lo que hace es mostrarme en el propio navegador el contenido
del fichero XML.
¿HabrÃa posibilidad de forzar la descarga del fichero? Me interesa que
el usuario se descargue ese fichero, y no lo visualice por el navegador.
Gracias por anticipado.
2008/10/6 Tomás Arcos [email protected]:
En articles.xml.builder genero el XML utilizando XmlMarkup. Y ahora, en
las vistas, puedo crear algún enlace del tipo:
Pero esto lo que hace es mostrarme en el propio navegador el contenido
del fichero XML.
¿HabrÃa posibilidad de forzar la descarga del fichero? Me interesa que
el usuario se descargue ese fichero, y no lo visualice por el navegador.
Por ejemplo algo como esto …
class ArticlesController < ApplicationController
def index
@articles = Article.find(:all)
respond_to do |format|
format.html
format.xml { send_data render_to_string :xml => @articles }
end
end
end
2008/10/6 Tomás Arcos [email protected]:
headers[“Content-Type”] = “application/xml”
headers[“Content-Disposition”] = “attachment;
filename="#{current_user.name}.xml"”
Buena solución tambien, quizas más elegante.
2008/10/6 Tomás Arcos [email protected]:
headers[“Content-Type”] = “application/xml”
headers[“Content-Disposition”] = “attachment;
filename="#{current_user.name}.xml"”
Esta disponible via la API:
send_data(
…,
:type => …,
:filename => …,
:disposition => …
)
Hola Tomás,
muchas gracias por tu respuesta, me autocontesto yo también por si le
sirve a alguien:
headers[“Content-Type”] = “application/xml”
headers[“Content-Disposition”] = “attachment;
filename=”#{current_user.name}.xml""
Voy a probar tu solución también
Un saludo.