railscasts #396 Importing CSV に従い、CSV アップロードを Rails プロジェクトに実装しました。
これは私のビューファイルです:
<%= 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
、エラーが発生します。
CustomersController#import の NoMethodError
["abc@wer.com"]:Array の未定義メソッド `to_hash'
ヘッダー行を必要とせずに CSV ファイルをアップロードする方法を誰か教えてもらえますか?