分析Rails 3.2 Ruby 2中的CSV头时出错
我们去年在使用ruby 1.9.3和Rails 3.0时运行了这段代码,没有出现任何问题,但在升级之后,我们现在需要在今年再次运行它,但它失败了 导入CSV文件时,错误似乎与解析标题有关。代码是分析Rails 3.2 Ruby 2中的CSV头时出错,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我们去年在使用ruby 1.9.3和Rails 3.0时运行了这段代码,没有出现任何问题,但在升级之后,我们现在需要在今年再次运行它,但它失败了 导入CSV文件时,错误似乎与解析标题有关。代码是 ROOT_DIR = File.expand_path File.dirname(__FILE__) csv_file = ROOT_DIR + '/holidays_2016.csv' csv = CSV.read(csv_file, headers: true) 返回的错误是 output err
ROOT_DIR = File.expand_path File.dirname(__FILE__)
csv_file = ROOT_DIR + '/holidays_2016.csv'
csv = CSV.read(csv_file, headers: true)
返回的错误是
output error: #<NoMethodError: undefined method `table' for #<Object:0x007f82898e15a8>>
删除Header:true选项修复了这个问题,但我确实需要这些Header,因为它们将在代码的后面使用 尝试使用return\u头:true
从:
:标题
如果设置为:first_row或true,CSV文件的初始行将被视为一行标题。如果设置为数组,则内容将用作标题。如果设置为字符串,则通过调用::parse_line运行该字符串,并使用与此实例相同的:col_sep、:row_sep和:quote_char生成一个头数组。此设置使shift以CSV::Row对象而不是数组的形式返回行,并使read返回CSV::Table对象而不是数组数组
:返回页眉
如果为false,则头行将被默默地吞没。如果设置为true,则在CSV::Row对象中返回具有相同标题和字段的标题行,但字段不经过转换器
旁注:CSV.read需要散列作为选项参数,而不是命名参数。这可能是因为默认设置,而不是因为您的代码似乎没有bug。看一看。CSV.readcsv_文件,{headers:true}应该可以解决您的问题。还是一样的问题。在去年的文件上运行代码,它工作正常,现在也报告了同样的错误。哦,我被选项名缠住了,对不起。它应该是CSV.readcsv_文件,当然是{return_headers:true}。