三蔵開発メモ

Web開発やインフラ関連のメモを共有します

Ruby On RailsでControllerからViewへのリダイレクトの際にメッセージ等レスポンスを返す方法

登録フォームなどをRailsで書いていると、登録成功、失敗それぞれのときにView側にメッセージを返したくなる時がある。 ajaxなどを使ってもできるが、flashを利用するとRailsのみで実現できる。

  • controller側の例
def create
  # 何らかの処理

  if 成功した場合
    flash[:notice] = "成功メッセージ"
    redirect_to 成功時のリダイレクト先
  else
    flash[:alert] = "失敗メッセージ or エラーメッセージ"
    redirect_to 失敗時のリダイレクト先
  end
end
  • view側の例(slim)
- if flash[:notice]
    .notification.is-success = flash[:notice]
- if flash[:alert]
    .notification.is-danger = flash[:alert]

flashをそのまま受け取って、if文で分岐し、メッセージを表示させる。

railsdoc.com