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.

1 Answer 1

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
%>
Sign up to request clarification or add additional context in comments.

2 Comments

I didn't know you could take a method call onto the end of a block like that. Ruby is cool.
I didn't know that either. Woohoo!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.