我在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 -%>
当我建立了这一点,一切都工作得很好,直到我到达表格的最后一列“报告类型”。下面是当被添加会发生什么:
注意,第一个项目是如何拥有HTML "
开头和结尾?但下一个不?第一个如何分布在其他无标题列中?以及最后一个没有"
,但中间有&
(当然是&符号)?
所有这些值都以文本形式存储在ReportType表中,它们在Rails中以字符串的形式出现,据我所知,它们的数据类型在任何地方都没有什么不同,但它们的行为不同从桌子上拉出来。
如果我将“报告类型”从出口中取出,请查看我的表有多可爱?
没有跳过的行或任何东西!
在我看来,这些HTML字符 - 特别是前导和尾随双引号 - 至少在这里引起了一些麻烦。我尝试使用.gsub('"', '')
删除它们,但这不起作用。
有没有人遇到过这个或有任何见解?
我认为你的CSV文件是从ERB打开HTML转义出来的。你确定源数据中没有这样的东西吗? – tadman
@tadman嗯...不是我所知道的 - 我对Rails有点新 - 我在哪里查看? – skwidbreth
@tadman - 谢谢你,你帮我弄清楚了 - 看下面。 – skwidbreth