Ruby on rails 未知属性';标题…';在Rails上导入CSV期间
我有一个问题,因为我试图导入我在Mac上用数字创建的CSV 以前在Ubuntu和LibreOffice上一切都正常 当我尝试导入我的CSV文件时,出现错误Ruby on rails 未知属性';标题…';在Rails上导入CSV期间,ruby-on-rails,ruby,csv,libreoffice,Ruby On Rails,Ruby,Csv,Libreoffice,我有一个问题,因为我试图导入我在Mac上用数字创建的CSV 以前在Ubuntu和LibreOffice上一切都正常 当我尝试导入我的CSV文件时,出现错误 unknown attribute 'adress user_id room_type etc...' for Bien. 我认为它不会检测分隔符,并将第一个侦听器行作为一个字符串 我的导入功能: def self.import(file) CSV.foreach(file.path, headers: true) do |row|
unknown attribute 'adress user_id room_type etc...' for Bien.
我认为它不会检测分隔符,并将第一个侦听器行作为一个字符串
我的导入功能:
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
@bien = Bien.create! row.to_hash
@bien.save
end
end
我将知道如何导入文件,以及在创建数字CSV时是否有需要更改的内容
更新
我认为您完全正确,看起来分隔符没有得到尊重,因此标题行显示为一个长字符串。要进行调试,您可以尝试将
pry
放入并运行CSV.read(file.path)
以查看转换为CSV的整个输出。一旦你这样做了,你应该能够看到什么数字用于分隔符
建议数字使用分号作为默认分隔符,因此如果定义col_sep:';'
作为一个选项,这可能会起作用。(参考:)
所以,代码应该是
def self.import(file)
CSV.foreach(file.path, col_sep: ';', headers: true) do |row|
@bien = Bien.create! row.to_hash
@bien.save
end
end
你能提供CSV文件中的
Bien
属性和前几行吗?@Leo我更新了CSVI嫌疑犯的屏幕截图,因为你的address
列的值中有逗号,数字可能会将你的分隔符从逗号改成其他形式(可能是分号)。请看我的答案,我认为它适用于@supremebeing7,但不应该是这种情况,默认情况下,LibreOffice Calc用引号包围文本字段,并且文本字段内的引号被转义。@AntoineWako在Calc中提供内容的屏幕截图很好。但您是否也可以提供生成的CSV(不是屏幕截图,而是纯文本代码块)?结果可能会因在LibreOffice中选择的CSV设置而异。我看到分隔符是空格,所以我用LibreOffice更改分隔符,现在它的工作谢谢!