【发布时间】:2019-03-07 04:28:30
【问题描述】:
我正在尝试从 Active Admin 上传带有 Rails 的 csv 文件。
我有一个模型用户,它有 name(string) 和 age(integer) 列。
我的 csv 文件如下所示:
name,age
"Peter",31
"Susan",30
"John",40
然后我在我的admin/user.rb:
ActiveAdmin.register User do
permit_params :name, :age
collection_action :upload_csv do
render "admin/csv/upload_csv_user"
end
collection_action :import_csv_data_user, :method => :post do
ret_val = CsvDb.update_model_from_csv("user", params[:dump][:file])
redirect_to :action => :index, :notice => ret_val
end
end
在我的admin/csv/upload_csv_user.html.erb 我有:
<%= form_for(:dump, :url=>{:action=>"import_csv_data_user"}, :html => { :multipart => true }) do |f| %>
<%= f.file_field :file %>
<%= f.submit "Submit", confirm: "Are You Sure?" %>
<% end %>
在我拥有的 csv_db.rb 文件中:
require 'csv'
module CsvDb
def self.update_model_from_csv(model_name, file)
csv_data = CSV.read(file.path)
columns = csv_data.shift
model = model_name.classify.constantize
ret_val = "Data updated successfully!"
begin
model.import columns, csv_data, on_duplicate_key_update: columns, validate: false
rescue Exception => e
ret_val = e
end
ret_val
end
end
当我尝试上传文件时,我收到以下错误:第 1 行中的非法引用。
下面写着:
部分“\”名称“
解析“\”姓名、年龄\“”
部分 ["\"姓名", "年龄\""]
未转换的零
in_extended_col 错误
csv []
我检查了很多示例,但找不到错误。也许我的 csv 文件格式不正确。
【问题讨论】:
标签: ruby-on-rails csv