Ruby on rails 是否可以在不将值封装为字符串的情况下导出到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

我希望我的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| presentable(result) }.join(',')
它返回:

"result1,result2,result3"

但是我怎么能让它“不是一个字符串”,这样它就可以被附加到我的CSV中,而不带引号

除了您的代码会返回
意外的',',期望$end
,看起来您想要逃避
字符或使用与
不同的列分隔符。我希望;)

Iirc Ruby
CSV
类支持诸如
:col_sep
:quote_char
之类的参数,您应该检查它们。

通过使用
.join(',)
将结果连接到单个字符串中。换句话说,您正在将3个元素传递给CSV,而不是所需的5个元素

您需要:

  • 移除
    连接
  • 使用splat操作符将枚举数(从
    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