前提・実現したいこと
CSVファイルのアップロード機能を作ろうとしており、ファイルを選択してアップロードする機能は実現できましたが、
ファイルを選択していない際にインポートボタンをクリックした時の処理の記述の仕方がわからないです。
ruby コード (コントローラー) def import current_user.tasks.import(params[:file]) redirect_to tasks_url, notice: "タスクを追加しました。" end
ruby
1コード (モデル) 2def self.import(file) 3 CSV.foreach(file.path, headers: true) do |row| 4 task = new 5 task.attributes = row.to_hash.slice(*csv_attributes) 6 task.save! 7 end 8 end
ruby
1コード (view) 2= form_tag import_tasks_path, multipart: true, class: "mb-3" do 3 = file_field_tag :file 4 = submit_tag "インポート", class: "btn btn-primary" 5
発生している問題・エラーメッセージ
エラーメッセージ NoMethodError (undefined method `path' for nil:NilClass):
Model内の
”CSV.foreach(file.path, headers: true) do |row|”のCSV.foreachの部分?でファイルを選択していない時には何もない?ためにエラーが発生している?
試したこと
コントローラーでif文を使用してみましたがうまくいきませんでした。
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/26 07:16