Ruby on rails 在Ruby中写入CSV文件时未定义的方法映射

Ruby on rails 在Ruby中写入CSV文件时未定义的方法映射,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我正在尝试从Rails模型中的字符串将输入表单中的行写入CSV文件: def form_to_csv file = CSV.open('temp.csv', 'w+') do |csv| self.input_data.split("\n").each do |line| csv << line end end input_data_file = InputDataFile.new(file: file)

我正在尝试从Rails模型中的字符串将输入表单中的行写入CSV文件:

  def form_to_csv
    file = CSV.open('temp.csv', 'w+') do |csv|
      self.input_data.split("\n").each do |line|
        csv << line
      end
    end

    input_data_file = InputDataFile.new(file: file)
    self.input_data_file = input_data_file

  end

欢迎任何意见

看起来input_data是一个在字符串上调用map的方法

如果不确定发生了什么,可以在
app/models/job\u request.rb:111
中添加
pry
byebug
,然后运行
form\u to\u csv
方法,以便在错误点暂停执行


我猜你会对某个变量的值/数据类型感到惊讶…

self.input\u data中是什么?它是一根绳子吗?您还缺少一个
end
标记。我认为在写入文件后应该有另一个
end
,这样您就可以在第7行使用变量
file
?您在哪里关闭
|csv |
子句?self.input|u data是一个字符串是什么是整个stacktrace,您必须获得比这一行更多的错误信息。发布完整stacktrace
[FATAL] NoMethodError (undefined method `map' for "one\r":String Did you mean?  tap): 
[FATAL] app/models/job_request.rb:112:in `block (2 levels) in form_to_csv' 
[FATAL] app/models/job_request.rb:111:in `each' 
[FATAL] app/models/job_request.rb:111:in `block in form_to_csv'
[FATAL] app/models/job_request.rb:110:in `form_to_csv' 
[FATAL] app/controllers/job_requests_controller.rb:21:in `create'