【问题标题】:Ruby 1.9.2 export a CSV string without generating a fileRuby 1.9.2 导出 CSV 字符串而不生成文件
【发布时间】:2011-10-19 11:35:51
【问题描述】:

我根本无法让“Writing”example in the documentation 下的“To a String”示例工作。

ruby -v 返回: ruby 1.9.2p290(2011-07-09 修订版 32553)[x86_64-darwin10.8.0]

我无法工作的文档中的示例在这里:

csv_string = CSV.generate do |csv|
    csv << ["row", "of", "CSV", "data"]
    csv << ["another", "row"]
end

我得到的错误是:

wrong number of arguments (0 for 1)

所以我似乎遗漏了一个论点,在文档here 中它指出:

This method wraps a String you provide, or an empty default String

但是当我传入一个空字符串时,它给了我以下错误:

No such file or directory - 

我不想生成一个 csv 文件,我只是想创建一个 csv 字符串,我将其作为文本发送给用户。

【问题讨论】:

  • 您是否在调用方法之前放置了 => require 'csv'

标签: ruby csv ruby-1.9.2


【解决方案1】:

这是我知道的适用于带有 Rails 3.0.1 的 Ruby 1.9.2 的代码

def export_csv(filename, header, rows)
    require 'csv'

    file = CSV.generate do |csv|
        csv << header if not header.blank?
        rows.map {|row| csv << row}
    end

    send_data file, :type => 'text/csv; charset=iso-8859-1; header=present', :disposition => "attachment;filename=#{filename}.csv"
end

【讨论】:

  • 我之前在使用blank?时遇到过错误,所以我使用empty?
猜你喜欢
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 2017-12-09
  • 2019-05-15
  • 1970-01-01
  • 2013-06-22
  • 2014-03-03
  • 1970-01-01
相关资源
最近更新 更多