5

私の見解では、私は持っています:

<% flash.now[:error] = "ERROR FLASH" %>
<% flash.now[:notice] = "NOTICE FLASH" %>
<% flash.now[:warning] = "WARNING FLASH" %>

ページがレンダリングされると、NOTICE FLASH が表示された青色の情報ボックスのみが表示されます。他の 2 つは表示されません。等号でも同じことが起こります。

<%= flash.now[:error] = "ERROR FLASH" %>
<%= flash.now[:notice] = "NOTICE FLASH" %>
<%= flash.now[:warning] = "WARNING FLASH" %>

Rails アプリに、警告またはエラー フラッシュが表示されないように設定する設定はありますか?

4

2 に答える 2

8

私は次のコードで同じ問題を抱えていました:

redirect_to(docs_path, :warning => "I am here!!!") and return if @doc.nil?

':warning'の代わりに':notice'と':alert'を使用すると、期待どおりに機能します。リダイレクトメソッドで:noticeと:alertを直接設定できるようですが、:errorと:warningは設定できません。

flash [:warning] .nilをテストしていますか?次のアクションではtrueになりますが、flash [:notice] .nil?falseです(つまり、:warning flashは設定されていませんが、:noticeは設定されています)。

これを回避するために、リダイレクトの前にflash [:warning]値を次のように設定します。

if @doc.nil?
  flash[:warning] =  "I am here!!!"
  redirect_to(docs_path) and return 
end

それほどエレガントではありませんが、機能します。

于 2012-01-28T21:31:10.097 に答える
4

Rails は、flash の内容に対して魔法のようなことは何もしません。

フラッシュの内容に対して適切なアクションを実行するのは完全にあなた次第です。つまり、エラー、通知、および警告を表示したい場合は、

<%= flash[:error] %>

ビューテンプレートまたはレイアウトのどこかで、ユーザーがそれを見ることができます (そして、:warning、:notice、およびこの方法で表示したい他のフラッシュキーについて繰り返します)

于 2011-12-20T19:11:51.597 に答える