🥁
[Rails]非同期通信でバリデーションエラーメッセージを表示させる方法
変更前
同期処理でフラッシュエラーメッセージを表示させていた。
バリデーションエラーメッセージを表示させることにおいて、
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
補足
コメント機能の非同期についてはこちらから
Discussion