Closed smptmhr closed 2 years ago
appp/views/layouts/application.html.erb
のエラーメッセージ表示箇所で、メッセージ自体が生成されているかを確認
<body>
<% flash.each do |message_type, message| %>
<% p message_type %>
<% p message %>
<div class="alert alert-<%= message_type %>"><%= message %></div>
<% end %>
<%= yield %>
編集→名前を空にしてsave changes
サーバーの出力
Started PATCH "/tasks/80" for ::1 at 2022-06-13 15:18:39 +0900
Processing by TasksController#update as TURBO_STREAM
Parameters: {"authenticity_token"=>"[FILTERED]", "task"=>{"name"=>"", "description"=>"", "start_date"=>"2022-06-21", "necessary_days"=>"3", "progress"=>"未着手", "priority"=>"中"}, "commit"=>"Save changes", "id"=>"80"}
Task Load (0.2ms) SELECT "tasks".* FROM "tasks" WHERE "tasks"."id" = $1 LIMIT $2 [["id", 80], ["LIMIT", 1]]
↳ app/controllers/tasks_controller.rb:61:in `find_task_with_err_handling'
Rendering layout layouts/application.html.erb
Rendering tasks/edit.html.erb within layouts/application
Rendered shared/_error_messages.html.erb (Duration: 0.7ms | Allocations: 411)
Rendered tasks/_form.html.erb (Duration: 6.3ms | Allocations: 3005)
Rendered tasks/edit.html.erb within layouts/application (Duration: 6.7ms | Allocations: 3162)
"danger"
"Failed to update task"
Rendered layout layouts/application.html.erb (Duration: 21.5ms | Allocations: 8741)
Completed 200 OK in 26ms (Views: 22.2ms | ActiveRecord: 0.2ms | Allocations: 10014)
下から3,4行目、エラーメッセージは正しく生成されていることは確認できた。
現状、フラッシュメッセージが確認できないのはclassがalert-danger
の場合のみ。
alert-success
の場合は表示ができている。
クラスが原因なのかを検証する。
<div class="alert alert-<%= message_type %>"><%= message %></div>
の alert-<%= message_type %>
をalert-danger
に変更して、
正しくメッセージが表示されていた更新成功パターンを見てみる。
問題なくメッセージが表示されてるので、メッセージのタイプが原因ではないことを確認。
tasks_controller
内のupdateアクション
if @task.update(task_params)
flash[:success] = I18n.t 'task_update_success'
redirect_to @task
else
flash.now[:danger] = I18n.t 'task_update_failed'
render 'edit'
end
のelseのパターン(更新失敗)をflash.now
からflash
に書き換えた上で、
編集
→名前を空にする→save changes
→編集をキャンセル
の順に操作すると、詳細ページ(show)でエラーが出力される。
flash.now
のままではこの挙動は現れなかった。
内容
タスクの新規作成/編集(更新)の際、バリデーションエラーになる入力がされるとこれまではエラーメッセージが出力されていた。 それが #19 をマージ後は表示されなくなった。 成功時のメッセージは問題なく表示される。
発見の経緯
23 でタスクのCRUDテストを作成をしており、これまで通っていたテストが #19 のmerge後は通らなかったことで発見。
原因と思われる箇所
appp/views/layouts/application.html.erb
の10行目ここをコメントアウトして実行したところエラーメッセージが表示されることを確認。