3

Rails 3 アプリケーションでレポートの CSV 出力を生成するために FasterCSV を使用しています。コード スニペットを次に示します。

<%= 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 生成を入れることができるブロックは必要ありません。

4

1 に答える 1

5

ファイル(おそらく単にTempfile)を生成して提供することをお勧めしますが、それを自分のやり方で続けたい場合は、CSV全体がHTMLセーフであることをRailsに伝える必要があります。FasterCSV.generate通常の文字列を返すと仮定して、単純に次のようにタックしhtml_safeます。

<%= FasterCSV.generate do |csv|
  ...
end.html_safe
%>
于 2011-07-15T19:30:56.080 に答える