🥁

[Rails]非同期通信でバリデーションエラーメッセージを表示させる方法

2023/12/24に公開

変更前

同期処理でフラッシュエラーメッセージを表示させていた。
バリデーションエラーメッセージを表示させることにおいて、
renderでのリダイレクトが求められるため、修正する必要がある。

comments_controller.rb
:
 if @comment.save
 else 
 redirect_to request.referer, alert: "コメントは200文字で入力してください"

変更後

respond_toを用いてJSファイルの読み込みを指定し、
メッセージ部分のパーシャルファイルをを非同期にする。

comments_controller.rb
:
:
respond_to do |format|
 if @comment.save
  format.js { render :create }
 else
   # error.js.erbを作成し、バリデーションエラーメッセージ表示させる。
  format.js { render :error }
 end
end

補足

コメント機能の非同期についてはこちらから
https://zenn.dev/yayu1303/articles/77c5c06362c222

Discussion