我在我的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;。以下是添加内容时会发生的情况:
注意第一个条目的HTML "
前导和尾随?但下一个不是吗?以及如何将第一个分布在其他无头列中?最后一个怎么没有"
,但中间有&
(当然是&符号)?
所有这些值都作为文本存储在ReportType表中,并且它们在Rails中作为字符串出现,据我所知,它们的数据类型在任何地方都没有任何不同,但它们在拉动时表现不同离开桌子。
如果我采取报告类型&#39;在出口之外,看看我的桌子有多可爱?
没有跳过的线条或任何东西!
在我看来,这些HTML字符 - 尤其是前导和尾随双引号 - 至少会引起一些麻烦。我尝试使用.gsub('"', '')
删除它们,但这没有效果。
以前是否有人遇到此问题或有任何见解?
答案 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
这就是诀窍。呼!
但是,如果有人有其他解决办法,我想听听他们的意见。