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

时间:2017-01-08 15:34:06

标签: 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)
    self.input_data_file = input_data_file

  end

然而我收到错误:

  

未定义的方法`map&#39; for&#34; ...&#34;:String你的意思是?挖掘

完整错误:

[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'

欢迎任何想法。

1 个答案:

答案 0 :(得分:2)

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

如果您不确定发生了什么,可以在pry中添加byebugapp/models/job_request.rb:111,然后运行form_to_csv方法所以它会在错误点暂停执行。

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