3

I'm using FasterCSV to produce CSV output of my reports in a Rails 3 application. Here's a code snippet:

<%= FasterCSV.generate do |csv|
  @groups.each do |b|
    record = [ b.group, b.organization_name, b.status, b.comments ]
    csv << record
  end
end 
%>

When FasterCSV includes an empty string, it uses a pair of empty double quotes.

Unfortunately, Rails 3 is encoding those quotation marks as entities, which doesn't work very well with Excel. Here's what my CSV output looks like (when b.comments is nil or an empty string):

Rafeland,Rafe Organization,Submitted,&quot;&quot;

What's the generally accepted method for preventing Rails from encoding those entities? I know about the raw method, but it doesn't take a block that I can put the CSV generation into.

the Tin Man
  • 158,662
  • 42
  • 215
  • 303
Rafe
  • 3,056
  • 1
  • 22
  • 25

1 Answers1

5

I would recommend generating a file (perhaps merely a Tempfile) and serving that, but if you want to continue doing it your way, then you need to tell Rails that the entire CSV is HTML-safe. Assuming FasterCSV.generate returns a normal String, then simply tack on html_safe:

<%= FasterCSV.generate do |csv|
  ...
end.html_safe
%>
the Tin Man
  • 158,662
  • 42
  • 215
  • 303
Jeremy Weathers
  • 2,556
  • 1
  • 16
  • 24