我正在使用FasterCSV在Rails 3应用程序中生成报告的CSV输出。这是一个代码片段:

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


当FasterCSV包含空字符串时,它将使用一对空双引号。

不幸的是,Rails 3将那些引号编码为实体,这在Excel中效果不佳。这是我的CSV输出的样子(当b.comments为nil或空字符串时):

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


防止Rails对那些实体进行编码的公认方法是什么?我知道raw方法,但是可以将CSV生成放到一个块中。

最佳答案

我建议生成一个文件(也许只是一个临时文件)并提供该文件,但是如果您想继续使用它,那么您需要告诉Rails整个CSV是HTML安全的。假设FasterCSV.generate返回一个正常的String,然后简单地添加html_safe

<%= FasterCSV.generate do |csv|
  ...
end.html_safe
%>

10-08 01:18