Output non-HTML (CSV) from Rails


#1

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


#2

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


#3

removed_email_address@domain.invalid 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


#4

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, removed_email_address@domain.invalid removed_email_address@domain.invalid


#5

Mr Wagner:
On Jan 11, 2006, at 8:02 AM, removed_email_address@domain.invalid
removed_email_address@domain.invalid 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. removed_email_address@domain.invalid