🦩

フラッシュメッセージに色つけて、見やすくする。

2024/07/19に公開

コントローラー

app/sessions_controller.rb
  def create
    @user = User.find_by(name: params[:user][:name])
    if @user && @user.valid_password?(params[:user][:password])
      sign_in(@user)
      flash[:login] = "ログインしました。"
      redirect_to user_path(@user)
    else
      flash.now[:alert] = "ユーザー名またはパスワードが間違っています。"
      render :new
    end
  end

ビュー

users/show.html.erb
 <% if flash.now[:user_update] %>
    <div class="alert alert-success">
      <%= flash.now[:user_update] %>
    </div>
  <% elsif flash[:signup] %>
    <div class="alert alert-success">
      <%= flash[:signup] %>
    </div>
  <% elsif flash[:login] %>
    <div class="alert alert-success">
      <%= flash[:login] %>
    </div>
  <% elsif flash[:guest] %>
    <div class="alert alert-success">
      <%= flash[:guest] %>
    </div>
  <% end %>
  • elsifにしないと、フラッシュメッセージを表示させなくてもいい時に、文章は出ないけど、指定した色だけ表示されてしまうので、elsifにすること。

  • 同じところにフラッシュメッセージを表示させる時、全部同じ、flash[:notice]にすると判断がつかなくなってしまう為、名前変える。(名前はなんでもいい。)

カラー

  • alert-success → 緑(成功時)
  • alert-danger    → 赤(投稿失敗時やログアウト、退会とか)
  • alert-warning → 黄色(警告とか、注意書き)
  • alert-info → 青(通知用とか)

Discussion