我遇到了FasterCSV和我的rake db:种子迁移的问题.我得到错误:"rake aborted!unquoted字段不允许\ r或\n(第2行)"对以下seeds.rb数据:
require 'csv'
directory = "db/init_data/"
file_name = "gardenzing020812.csv"
path_to_file = directory + file_name
puts 'Loading Plant records'
# Pre-load all Plant records
n=0
CSV.foreach(path_to_file) do |row|
Plant.create! :name => row[1],
:plant_type => row[3],
:group => row[2],
:image_path => row[45],
:height => row[5],
:sow_inside_outside => row[8]
n=n+1
end
Run Code Online (Sandbox Code Playgroud)
我已经搜索了这个问题的解决方案,并发现对于很多人来说这是一个UTF-8编码问题.我已经尝试过要求iconv和:encoding =>'u',但这会给我错误"UTF-8中的无效字节序列".
我是新手,我无法弄清楚它是否真的是一个我需要破解的编码问题(我一直试图做不成功,如果是这样,我真的可以使用一些指导)或者更可能是我感觉,我已经做了一个简单的失误,并且做了一些错误的方式我设置了seeds.rb,可能还有我的excel - > csv文件.csv文件中没有错误或笨拙的数据.它是简单的单字符串,文本和整数.请帮忙!
我为我的Rails应用程序使用了Ruby中的内置CSV函数。我正在调用URL(通过HTTParty)解析它,然后尝试将结果保存到我的数据库中。
问题是,我得到的错误Unquoted fields do not allow \r or \n通常指示输入数据有问题,但是在检查数据时,我找不到任何问题。
这是我检索数据的方式:
response = HTTParty.get("http://" + "weather.com/ads.txt", limit: 100, follow_redirects: true, timeout: 10)
(该数据可从以下网址公开获得:weather.com/ads.txt)
然后,我尝试解析数据,并使用一些正则表达式忽略a之后的所有内容#,忽略空行等。
if response.code == 200 && !response.body.match(/<.*html>/)
active_policies = []
CSV.parse(response.body, skip_blanks: true, skip_lines: /(^\s*#|^\s*$|^contact=|^CONTACT=|^subdomain=)/) do |row|
begin
#print out the individual ads.txt records
puts ""
print row[0].downcase.strip + " " + row[1].strip + " " +
row[2].split("#").first.strip
active_policies.push(
publisher.policies.find_or_create_by(ad_partner: row[0].downcase.strip, external_seller_id: row[1].strip, seller_relationship: row[2].split("#").first.strip) do |policy|
policy.deactivated_at = nil
end
)
rescue => …Run Code Online (Sandbox Code Playgroud)