你如何防止Rails在FasterCSV输出中编码实体?

Raf*_*afe 3 csv ruby-on-rails fastercsv

我正在使用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 
%>
Run Code Online (Sandbox Code Playgroud)

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

不幸的是,Rails 3将这些引号编码为实体,这对Excel不起作用.这是我的CSV输出的样子(当b.comments为nil或空字符串时):

Rafeland,Rafe Organization,Submitted,&quot;&quot;
Run Code Online (Sandbox Code Playgroud)

什么是阻止Rails编码这些实体的普遍接受的方法?我知道"原始"方法,但它不会阻止我可以将CSV生成.

Jer*_*ers 5

我建议生成一个文件(可能只是一个Tempfile)并提供服务,但是如果你想继续按照自己的方式进行操作,那么你需要告诉Rails整个CSV是安全的.假设FasterCSV.generate返回一个普通的String,那么就.html_safe这样简单地说:

<%= FasterCSV.generate do |csv|
  ...
end.html_safe
%>
Run Code Online (Sandbox Code Playgroud)