Output non-HTML (CSV) from Rails

Hi,

I want to offer a CSV download of data in my Rails app (eg. An “Export
to Excel” link to grab the current view of tabulated data).

However, I can’t seem to break-out of the Rails framework to output this
non-HTML data. Even if I eliminate my layout template from my view, the
most basic view (no HTML) will still wrap the output in

tags.

Does anyone have a recommended way to do this within Rails?

Thank you!

Matt

–
Matt C. Wagner
Information Security Analyst

Network Intrusion Detection
Security Operations Center
Corporate Information Security
Wells Fargo Bank

you need to change the Content-Type that you send to the browser to be
of type CSV. Something like Content-type: application/vnd.ms-excel

http://railswiki.pdxruby.org/HowtoChangeTheContentType.html

-adam

[email protected] wrote:

Does anyone have a recommended way to do this within Rails?

In the controller:

response.headers[‘Content-Disposition’] => ‘attachment’
response.headers[‘Content-Type’] => ‘text/csv’
render :text => @csv_contents, :layout => false

Hi Matt,

Have you tried send_data or send_file which are " Methods for sending
files
and streams to the browser instead of rendering."
I have used send_data to send and image to the browser. Check out my
howto
…

http://wiki.rubyonrails.com/rails/pages/HowtoSecureFormsWithNoisyImages

-bakki kudva

On 1/11/06, [email protected] [email protected]

Mr Wagner:
On Jan 11, 2006, at 8:02 AM, [email protected]
[email protected] wrote:

Does anyone have a recommended way to do this within Rails?

render_without_layout ‘template’ which defaults to the same name as
your action.
Cheers,
Hasan D. [email protected]