Hi All, I'm trying to create an XML file that the user can download, but I'm not sure how to do it. I'm able to create an action in my controller that renders to a .rxml template, which allows the user to view the XML in their browser window, but I don't want them to have to see the XML, then save it to their computer. I'd like to have them click a link and have a standard Save/Open dialog box (in IE) appear. Do I need to save the XML file to my server filesystem first, or can I just stream the file straight to the user? Thanks in advance for your help, Arash
on 2007-02-06 20:07
on 2007-02-06 20:20
On 2/6/07, archerid <email@example.com> wrote: > stream the file straight to the user? > > Thanks in advance for your help, > Arash You can stream it inline: class MyController < ApplicationController def get_file my_file = <<-FILE <your file contents here> FILE send_data my_file, :filename => 'myfile.xml' end end Hope this helps. -- Zack Chandler http://depixelate.com
on 2007-02-06 20:23
I think you need to set the header "Content-Disposition" to "Attachment"... that makes the browser treat the file as something to download. Can't remember off the top of my head how to set a response header in rails, but google should help with that. b
on 2007-02-10 06:22
Thanks Zack & Ben. I managed to get it working with a take-off on Zack suggestion. I used send_data to write out the file like this: send_data render :template=>"/route/gpx.rxml", :filename => "tb.xml" It works like a charm.