Rails - .csv错误地导出格式化字符串

时间:2016-07-28 00:17:09

标签: ruby-on-rails csv

我在我的Rails应用程序中遇到了一个问题,即表中的.csv数据导出格式不正确。

首先,这是生成.csv导出的代码...

report_controller.erb

class Admin::ReportController < ApplicationController

    def index
        @report = Report.all

        respond_to do |format|
            format.html
            format.csv do
                headers['Content-Disposition'] = "attachment;
                filename=\"report-summary.csv\""
                headers['Content-Type'] ||= 'text/csv'
            end
        end
    end

end

index.csv.erb

<%- headers = ["Report Id", "Datetime", "Latitude", "Longitude", "Report Type"] -%>
<%= CSV.generate_line headers -%>
<%- @report.each do |report| -%>
    <%- row = [report.id, report.datetime, report.latitude, report.longitude, report.report_type.report_type] -%>
    <%= CSV.generate_line row -%>
<%- end -%>

当我构建这个时,一切正常,直到我到达表格的最后一栏,&#39;报告类型&#39;。以下是添加内容时会发生的情况:

Problem table

注意第一个条目的HTML &quot;前导和尾随?但下一个不是吗?以及如何将第一个分布在其他无头列中?最后一个怎么没有&quot;,但中间有&amp(当然是&符号)?

所有这些值都作为文本存储在ReportType表中,并且它们在Rails中作为字符串出现,据我所知,它们的数据类型在任何地方都没有任何不同,但它们在拉动时表现不同离开桌子。

如果我采取报告类型&#39;在出口之外,看看我的桌子有多可爱?

Good table

没有跳过的线条或任何东西!

在我看来,这些HTML字符 - 尤其是前导和尾随双引号 - 至少会引起一些麻烦。我尝试使用.gsub('"', '')删除它们,但这没有效果。

以前是否有人遇到此问题或有任何见解?

1 个答案:

答案 0 :(得分:0)

感谢@tadman指出我正确的方向 - 我改变了这一行:

<svg width="800px" height="600px">
  <filter id="redden">
    <feColorMatrix type="matrix" values="1 1 1 0 0 
                                         0 0 0 0 0 
                                         0 0 0 0 0 
                                         0 0 0 1 0"/>
  </filter>

<image filter="url(#redden)" width="190" height="400" preserveAspectRatio="xMinYMin slice"  xlink:href="http://i.stack.imgur.com/e6MUC.jpg"/>
</svg>

添加<%= CSV.generate_line row -%> ,如此:

raw

这就是诀窍。呼!

但是,如果有人有其他解决办法,我想听听他们的意见。