在我的result.csv.erb中,我在结果的某些列中创建了csv的问题,我得到数据溢出。
我有一个名为title的列,其格式可以是Son's of fortune
或Love,Fear,Hatred
。在第一种情况下,出于某种原因,我在结果中得到了& quot。另一方面,数据被拆分为默认值:col_sep是,。
<%- @results.each do |result| -%>
<%- row = result.values -%>
<%= CSV.generate_line row, :row_sep => nil, :quote_char => "'" %>
<%end%>
对于eg-:标题是Gas Shoe (Grey, Chestnut)
,结果溢出到其他列
title - "Gas Shoe (Grey
seller - Chestnut)"
如果绝对必要,我愿意在插入之前编辑数据。那么任何想法?
答案 0 :(得分:8)
默认情况下,rails3中的所有字符串都是不安全的,因此您需要在行上调用#html_safe。来自this answer:
<%=
response.content_type = 'application/octet-stream'
CSV.generate do |csv|
@persons.each do |person|
csv << [ person[:name], person[:nickname] ]
end
end .html_safe
%>
答案 1 :(得分:1)
我会按照https://en.wikipedia.org/wiki/Comma-separated_values的建议。没有标准的CSV格式,但“迈向标准化”部分提供了一些很好的建议。适用于您的部分是:
应引用包含换行符,双引号和/或逗号的字段。 (如果不是,则文件可能无法正确处理。)
字段中的(双)引号字符必须由两个(双)引号字符表示。
因此,如果该字段有逗号,请用双引号括起来。如果该字段具有双引号,则将其替换为两个双引号。带单引号的字段应该用双引号括起来,否则不需要修改。
答案 2 :(得分:0)
您可以使用YOUR_STRING.gsub(""","")