Hello all,
I am trying to export some xml files on the web app as a download, but Firefox/chrome/ie/safari all just display the xml content on themselves. How can I have the download prompt? Like I am downloading a .exe file?
Thank You
Hello all,
I am trying to export some xml files on the web app as a download, but Firefox/chrome/ie/safari all just display the xml content on themselves. How can I have the download prompt? Like I am downloading a .exe file?
Thank You
Hi Nik,
This is what we have and it seems to work in all the browsers
response.body = xml.to_s
response.content_type = "application/x-generated-xml-backup";
filename = "Filename.xml"
response.headers['Content-disposition'] = "Attachment;
filename=\"#{filename}\""
render :text => xml.to_s
Cheers Simon
Thanks Simon,
Where should I put this code? I have in my controller:
#Controller
def exportxml if params[:item_ids] @items = Item.find(params[:item_ids])
respond_to do |format| format.xml {render :layout=>false} end end end
Cheers! Nik
def exportxml if params[:item_ids] @items = Item.find(params[:item_ids])
respond_to do |format| format.xml { send_data @items.to_xml, :filename => "items.xml" } end end end
Hi Zuo,
Thank You! It works. Brilliantly. And thank you, too Simon!
All the best, Nik
Hi Zuo,
It works! But the XML structure I used in the builder is now lost. The XML file is now filled with the data from the columns.
Is there a way I can use my builder and your method?
Does anyone have an idea on this ?
Thanks! Nik
overwrite the to_xml method in your model or yield the builder object as part of the to_xml
@item.to_xml do |xml| # builder stuffs end
Hi Zuo!
Thank you again for your help! I did this and it says that a "}" is missing right after * as in :filename=>*
def exportxml if params[:item_ids] ||= @items = Item.find(params[:item_ids]) respond_to do |format| format.xml {send_data @items.to_xml do |xml| xml.instruct! xml.product do for t in @items xml.lineitem(:id=>t.name) do xml.name(t.name) xml.in(t.tradeIn/85.to_i) end xml.logginginfo do xml.lognote(t.note) end end end end end :filename=> "items.xml"} end end end
The builder stuff is copied straight from the exportxml.xml.builder.
And I don't know if this is helpful -- if I removed the :filename=>"items.xml" from above, it downloads! Yet, it again saves the file without extension and gives me the array of the columns of the table instead of my builder scheme.
I am sorry to have to ask for your help again.
Thank you