現在、セレクトボックスの選択肢により、異なる更新処理を作っています。
下のようなセレクトボックスですが、
選択肢は「なし」「承認」「否認」「申請中」でカラム名はindicater_replyです
右のチェックボックスのカラム名はchangeで、チェックボックスにチェックをし、セレクトの選択肢を選んで更新するといった動きです。
「なし」「承認」「否認」の場合は問題なくカラムが更新され、flashが出るのですが
チェックをしない場合やセレクトが「申請中」の場合も「なし」「承認」「否認」と同じflashが出ます。
コントローラーの8行目で、チェックボックスにチェックがある、かつ「なし」「承認」「否認」の場合しか進行しない内容になっているのに、
なぜ、例外のエラーに飛ばないのかがわかりません。
恐れ入りますが、方法を教えて頂けますでしょうか。
rb
1 def update_overtime_notice 2 ActiveRecord::Base.transaction do 3 o1 = 0 4 o2 = 0 5 o3 = 0 6 overtime_notice_params.each do |id, item| 7 if item[:indicater_reply].present? 8 if (item[:change] == "1") && (item[:indicater_reply] == "なし" || item[:indicater_reply] == "承認" || item[:indicater_reply] == "否認") 9 attendance = Attendance.find(id) 10 user = User.find(attendance.user_id) 11 if item[:indicater_reply] == "なし" 12 o1+= 1 13 item[:overtime_finished_at] = nil 14 item[:tomorrow] = nil 15 item[:overtime_work] = nil 16 item[:indicater_check] = nil 17 18 elsif item[:indicater_reply] == "承認" 19 item[:indicater_check] = nil 20 o2 += 1 21 attendance.indicater_check_anser = "承認しました" 22 elsif item[:indicater_reply] == "否認" 23 item[:indicater_check] = nil 24 o3 += 1 25 attendance.indicater_check_anser = "否認しました" 26 end 27 attendance.update_attributes!(item) 28 end 29 end 30 end 31 flash[:success] = "【残業申請】 #{o1}件なし, #{o2}件承認, #{o3}件否認しました" 32 redirect_to user_url(params[:user_id]) 33 end 34 rescue ActiveRecord::RecordInvalid 35 flash[:danger] = "無効な入力データがあった為、更新をキャンセルしました。" 36 redirect_to edit_overtime_notice_user_attendance_url(@user,item) 37 end 38 39
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/25 03:59
2020/10/25 04:01