railsでインポート機能を作成していて
機能自体はできたのですが、成功とエラーをフラッシュで表示させようとしたらうまくいきません。
現状はこれ
item.rb モデル
rails
1class Item < ApplicationRecord 2 validates :simulate_price, numericality: true 3 def self.import(file) 4 CSV.foreach(file.path,encoding: "Shift_JIS:UTF-8",headers: true) do |row| 5 # CSVからデータを取得し、設定する 6 item.attributes = row.to_hash.slice(*updatable_attributes) 7 # 保存する 8 if item.save 9 @processing="success" 10 end 11 end 12 end 13 14 # 更新を許可するカラムを定義 15 def self.updatable_attributes 16 ["item_title", "part_number", "simulate_price","item_picture"] 17 end 18end
items_controller.rb
rails
1def import 2 # fileはtmpに自動で一時保存される 3 if params[:file].present? 4 Item.import(params[:file]) 5 if @processing=="success" 6 flash[:success] = "成功しましました。" 7 else 8 flash[:warning]= "失敗しました" 9 end 10 else 11 flash[:success] = "CSVファイルを選択しているか確認下さい。" 12 end 13 redirect_to '/index' 14 end
ファイルを選択して実行したら成功しても失敗してもフラッシュには 失敗しました しか表示されません。(インポートの処理は正しいファイルを選択してたらうまくいく)
単純にモデルで設定した変数をコントローラーで受け取りたいのですが、いい方法はありますでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。