Ruby on rails 是否可以在不将值封装为字符串的情况下导出到csv?
我希望我的CSV如下所示:Ruby on rails 是否可以在不将值封装为字符串的情况下导出到csv?,ruby-on-rails,ruby,csv,Ruby On Rails,Ruby,Csv,我希望我的CSV如下所示: 12345,John Smith,result1,result2,result3 但它却变成了这样: 12345,John Smith,"result1,result2,result3" 问题是我不希望结果中出现“ 产生这种情况的ruby代码如下: @a = MyObject.find(x) CSV.generate do |csv| csv << @a.id, @a.name, results.collect{|result| presentab
12345,John Smith,result1,result2,result3
但它却变成了这样:
12345,John Smith,"result1,result2,result3"
问题是我不希望结果中出现“
产生这种情况的ruby代码如下:
@a = MyObject.find(x)
CSV.generate do |csv|
csv << @a.id, @a.name, results.collect{|result| presentable(result) }.join(',')
它返回:
"result1,result2,result3"
但是我怎么能让它“不是一个字符串”,这样它就可以被附加到我的CSV中,而不带引号
“
?除了您的代码会返回意外的',',期望$end
,看起来您想要逃避“
字符或使用与,
不同的列分隔符。我希望;)
Iirc RubyCSV
类支持诸如:col_sep
和:quote_char
之类的参数,您应该检查它们。通过使用.join(',)
将结果连接到单个字符串中。换句话说,您正在将3个元素传递给CSV,而不是所需的5个元素
您需要:
连接
并collect
)分解为单个元素(否则将在数组中得到一个数组)@a = MyObject.find(x)
CSV.generate do |csv|
csv << [@a.id, @a.name, *results.collect{ |result| presentable(result) }]
end
@a=MyObject.find(x)
CSV.generate do | CSV|
csv如果不是字符串,那么应该是什么?您发布的代码应该失败,并在@a.id,
之后检测到语法错误。
@a = MyObject.find(x)
CSV.generate do |csv|
csv << [@a.id, @a.name, *results.collect{ |result| presentable(result) }]
end