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 开发者_StackOverflowpair 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,""
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.
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
%>
精彩评论