【问题标题】:MIssing or stray quote when uploading CSV file (CSV::MalformedCSVError)上传 CSV 文件时丢失或杂散引用 (CSV::MalformedCSVError)
【发布时间】:2017-09-22 23:10:13
【问题描述】:

我正在尝试上传以下 CSV 文件:

1,Order,"{\"customer_name\":\"Jack\",\"customer_address\":\"Trade St.\",\"status\":\"unpaid\"}"
2,Order,"{\"customer_name\":\"Sam\",\"customer_address\":\"Gecko St.\",\"status\":\"unpaid\"}"
1,Product,"{\"name\":\"Laptop\",\"price\":2100,\"stock_levels\":29}"
1,Order,"{\"status\":\"paid\",\"ship_date\":\"2017-01-18\",\"shipping_provider\":\"DHL\"}"
2,Product,"{\"name\":\"Microphones\",\"price\":160,\"stock_levels\":1500}"
1,Invoice,"{\"order_id\":7,\"product_ids\":[1,5,3],\"status\":\"unpaid\",\"total\":2500}"
1,Invoice,"{\"status\":\"paid\"}"

当我尝试上传它时,我收到以下错误: 客户控制器中的 CSV::MalformedCSVError#import

这里第三行特别突出显示:

class Customer < ApplicationRecord
  def self.import(file)
    CSV.foreach(file.path, headers: true) do |row|
      Customer.create! row.to_hash
    end
  end

这也是我在控制器中所做的导入:

  def import
    Customer.import(params[:file])
    redirect_to customer_path, notice: "Customer Added Successfully"
  end

我知道这个问题可能来自引号语法错误,但我没有发现第一行的引号有任何问题。一切似乎都井井有条,我相信其他一切都是正确的,所以我有点难过。感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails csv import controller


    【解决方案1】:

    我用' 替换了\",它成功了:

    1,Order,"{'customer_name':'Jack','customer_address':'Trade St.','status':'unpaid'}"
    

    我同意这有点奇怪。希望解决方案对您有用。

    【讨论】:

    • 如果您正在创建 CSV,您可以将 JSON 编码为 base64,因此您不必将 \" 更改为 '
    • 哇,就是这样。现在得到一个新的但不同的错误,它说未知属性,但我会稍微研究一下。我没有看到 \" 以前不起作用的任何原因,但非常感谢。
    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多