ruby-on-rails - 如何防止 Rails 在 FasterCSV 输出中编码实体

标签 ruby-on-rails csv 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 
%>

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

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

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

防止 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/

相关文章:

ruby-on-rails - Compass 有什么好的 CSS 按钮框架?

ruby-on-rails - 有谁知道 "expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS"是什么意思?

ruby-on-rails - 为什么 Amazon Elastic Beanstalk 需要很长时间来更新我的部署?

javascript - 从excel复制粘贴,单元格换行符和行分隔符之间的区别

ruby - 如何使用 FasterCSV 导入名称类似于 "Ciarán"的行?

ruby-on-rails - 如何从 Rails 中的特定布局中排除样式表文件?

perl - 将行保存为 csv 格式

java - CSV 到 H2 - 字符编码不匹配

ruby - 用于多个字段的自定义 Ruby CSV 转换器

ruby - 什么是 Ruby 1.9 标准 CSV 库?