我正在使用 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,""
防止 Rails 对这些实体进行编码的公认方法是什么?我知道 raw
方法,但它不需要我可以将 CSV 生成放入的 block 。
最佳答案
我建议生成一个文件(也许只是一个临时文件)并提供该文件,但如果您想继续按照自己的方式进行,那么您需要告诉 Rails 整个 CSV 文件都是 HTML 安全的。假设 FasterCSV.generate
返回一个普通的字符串,然后简单地加上 html_safe
:
<%= FasterCSV.generate do |csv|
...
end.html_safe
%>
关于ruby-on-rails - 如何防止 Rails 在 FasterCSV 输出中编码实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6710015/