1. ホーム
  2. ruby-on-rails

フラッシュメッセージが消えないのですが?

2023-08-11 06:39:23

質問

コントローラで例外処理をしているのですが、:createアクションで例外が発生した場合、:newアクションにレンダリングしてフラッシュメッセージを表示させることができます。

例外が発生すると、フラッシュメッセージが表示されます。 へのリダイレクト(手でクリック) 他のページ、フラッシュメッセージ . その後、別のページにリダイレクトする( をクリックすると) と表示され、メッセージが消えることがあります。

どなたか、原因をご存知の方、教えてください。

私のコントローラのコードです。

class MessagesController < ApplicationController
  rescue_from Exception, :with => :render_new

  def new
  end

  def create
  end

private
  def render_new
    flash[:alert] = t("uploading_error")
    render :action => :new
  end
end

私のレイアウトコード(Haml)です。

%body
  #content
    - unless flash[:alert].blank?
      #alert= flash[:alert]

どのように解決するのですか?

置き換える

flash[:alert] = t("uploading_error")

flash.now.alert = t("uploading_error")

で、期待通りの結果かどうか見てみましょう。

flash[:alert] は次のページまで残ります (ですから、2 回目のリダイレクトで消えるだけです); しかし flash.now.alert は現在のページに対してのみ表示されます。