2017-09-22 3 views
0

Je suis en train de télécharger le fichier CSV suivant:MISSING ou citation parasite lors du téléchargement de fichier CSV (CSV :: MalformedCSVError)

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\"}" 

Lorsque je tente de le télécharger, je reçois l'erreur suivante: CSV: : MalformedCSVError à CustomersController # import

la troisième ligne ici est particulièrement mis en évidence:

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

Voici l'importation que j'ai fait dans le contrôleur ainsi:Je suis conscient que ce problème pourrait provenir d'une erreur de syntaxe de citation, mais je ne vois rien de mal avec les citations que j'ai sur la première ligne. Tout semble en ordre et je crois que tout le reste est correct, donc je suis un peu perplexe. Merci pour toute aide!

Répondre

0

Je remplacé \" avec ' et cela a fonctionné:

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

Je suis d'accord qu'il est peu bizarre. La solution d'espoir travaillera pour toi.

+0

Si vous créez le fichier CSV, vous pouvez encoder le fichier JSON en base64 de sorte que vous n'ayez pas besoin de changer \ "à ' – alebian

+0

Wow, c'était déjà le cas. Je vais y travailler un peu, je n'ai vu aucune raison pour laquelle le "ne fonctionnerait pas avant, mais merci beaucoup. – kalex

+0

@alebian Je vais regarder dans cela, merci – kalex