【问题标题】:How to prevent Rails from encoding entities in FasterCSV output如何防止 Rails 在 FasterCSV 输出中编码实体
【发布时间】:2011-10-06 07:18:04
【问题描述】:

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

<%= 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.cmets 为 nil 或空字符串时):

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

防止 Rails 对这些实体进行编码的普遍接受的方法是什么?我知道 raw 方法,但它不需要我可以将 CSV 生成放入的块。

【问题讨论】:

    标签: ruby-on-rails csv fastercsv


    【解决方案1】:

    我建议生成一个文件(也许只是一个临时文件)并提供它,但是如果你想继续按照你的方式做,那么你需要告诉 Rails 整个 CSV 是 HTML 安全的。假设FasterCSV.generate 返回一个普通的字符串,然后简单地附加html_safe

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

    【讨论】:

    • 我不知道您可以在这样的块末尾调用方法。 Ruby 很酷。
    • 我也不知道。哇哦!
    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    相关资源
    最近更新 更多