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]