我遵循 railscasts #396 Importing CSV 并在我的 rails 项目中实现了 CSV 上传。
这是我的视图文件:
<%= form_tag import_customers_path, multipart: true do %>
<%= file_field_tag :file %>
<%= submit_tag "Import" %>
<% end %>
这是我的控制器动作:
def import
current_user.customers.import(params[:file])
redirect_to customers_path, notice: "Users imported."
end
这些是我的模型方法:
def self.to_csv(options = {})
CSV.generate(options) do |csv|
csv << column_names
all.each do |customer|
csv << customer.attributes.values_at(*column_names)
end
end
end
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
Customer.create! row.to_hash
end
end
在这里,我不希望用户在 CSV 中包含标题。当我替换headers: true
为 时headers: false
,出现错误:
客户控制器中的 NoMethodError#import
["abc@wer.com"]:Array 的未定义方法 `to_hash'
谁能告诉如何在不需要标题行的情况下上传 CSV 文件?