あゆの塩焼きブログ

flashを使ってメッセージ表示を簡素化する

Agenda目次
  • ・⚡操作結果の表示で悩んでませんか?
  • ・🔥 flashを使えばメッセージ管理が爆速に!
  • ・🤔 flash.nowとは?flashとの違いを理解しよう
  • ・🚀 実際に導入してみたら便利すぎた件

⚡操作結果の表示で悩んでませんか?

Railsで「処理が成功しました!」とか「エラーが発生しました…」みたいなメッセージを表示したいとき、どうしていますか?

flash を使えば、スマートにリダイレクト後のメッセージを管理できます。

この記事では、flash の基本から flash.now との違い、活用方法まで解説します!

🔥 flashを使えばメッセージ管理が爆速に!

flash を使うと、リダイレクト後にメッセージを表示できます。例えば、こんな感じ👇

✅ flashを使ったシンプルな成功メッセージ

class UsersController < ApplicationController
  def create
    @user = User.new(user_params)
    if @user.save
      flash[:notice] = "ユーザー登録が完了しました!"
      redirect_to @user
    else
      flash[:alert] = "登録に失敗しました…"
      render :new
    end
  end
end

このコードでは、ユーザー登録が成功すれば flash[:notice] にメッセージをセットし、失敗したら flash[:alert] にエラーメッセージをセットしています。

redirect_to すると、次のページでメッセージが表示されるのがポイントです。

✅ ビューでの表示方法

flash のメッセージは application.html.erb などのレイアウトファイルに書いておくと便利!

<% flash.each do |key, message| %>
  <div class="flash <%= key %>">
    <%= message %>
  </div>
<% end %>

こうしておくと、どのページでも flash のメッセージが出せるようになります!

🤔 flash.nowとは?flashとの違いを理解しよう

flash には flash.now という似たような機能があります。

違いを簡単に説明すると…

  • メッセージの持続時間

    • flash は次のリクエストまでメッセージが残る
    • flash.now は即時表示され、リダイレクトすると消える
  • よく使うケース

    • flash はリダイレクト時のメッセージに使う
    • flash.nowrender するときに使う

例えば、さっきのユーザー登録の例で、バリデーションエラー時に flash.now を使うとこんな感じ👇

✅ flash.nowを使ったエラーメッセージの表示

class UsersController < ApplicationController
  def create
    @user = User.new(user_params)
    if @user.save
      flash[:notice] = "ユーザー登録が完了しました!"
      redirect_to @user
    else
      flash.now[:alert] = "登録に失敗しました…"
      render :new
    end
  end
end

この違い、わかりましたか?

  • flash[:alert] だと、エラーが出たあと別のページに遷移してもメッセージが残る
  • flash.now[:alert] だと、ページ遷移せずにすぐ消える

flash.nowrenderする場合に使う のがポイントです!

🚀 実際に導入してみたら便利すぎた件

実際にプロジェクトで flash を導入したら、こんなメリットがありました!

✅ 操作結果やエラーメッセージがスマートに表示できる
✅ シンプルなので、コードの保守性が保たれる
✅ ユーザー体験が向上する

例えば、ログインや登録処理で「成功!」「失敗…」のメッセージをサクッと表示できるので、

ユーザーにとって分かりやすいUI を作れるのが強みですね。

🎯 まとめ

  • flash はリダイレクト後のメッセージに使う
  • flash.nowrender で使う
  • レイアウトファイルに flash.each を書いておくと便利

これであなたも flash マスター!

Railsの開発で、ぜひ flash を活用してみてください🚀

Loading...