2011-08-30 4 views
8

でエラー配列を移入し、1.1.5Railsは - Railsの3.07を使用してメッセージ

すべてが正常に動作し、一つの例外を除いて期待通りにされて考案しません/認証失敗で兆候を考案します。たとえば、ユーザーが偽のパスワードでログインしようとすると、deviseは正しいログイン試行を拒否しますが、エラーメッセージは表示されません。

私はapp/helpers/devise_helper.rbにいくつかのエラー表示方法を設定しました。私はdevise_sign_in_error_messagesという名前のものを使用しています!ログインビューの場合したがって、この関数の次の行がこの場合エラーのために空文字列を返すことを確認できます。 resource.errors.emptyの場合は ""を返します。

正しいユーザー名とパスワードを入力した場合、システムは正常にログインしますので、すべてのデバイスロジックが正常に機能しているように見えます。エラーメッセージがないというのは謎です。

ログインに失敗したときにエラーメッセージが表示されるようにするには、何を変更する必要がありますか?

EDIT:

答えがあることである:a)の工夫がフラッシュ Bに答えを貼り付けている )それはフラッシュでいたとしても、それはあなたがこのビットを使用して

を期待するかもしれないキーを使用していませんコード、私はメッセージを見ることができます: Another stack overflow post:私は別の質問への答えとして、別のポストに出くわした

<% flash.each do |name, msg| %> 
<%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %> 
<% end %> 

フラッシュを先に出力しようとしましたが、メッセージが表示されませんでした。なぜなら、不十分と思われる別のスタックオーバーフローポストから少しのコードが続いたからです。つまり、私は試してみました:

<%= flash[:message] if flash[:message] 
flash[:warning] if flash[:warning] 
flash[:error] if flash[:error] %> 

Deviseはログインエラーメッセージにこれらのキーを使用していないので、このコードでは何も得られません。

私はdeviseの処理が矛盾していることがわかります。具体的には、私がdeviseの「パスワードを忘れました」オプションを選択して、たとえば偽の電子メールアドレスを入力すると、エラーはresource.errors配列に戻されますが、ここでは悪いログインでフラッシュに渡されます。

+3

回答は回答として投稿してください(後で受け入れることができます)。編集: – oers

+3

回答は回答ではなく、編集として投稿してください。そうでなければ、回答は未回答のままです – Calavera

答えて

15

あなたが発見したように、Devitsはflash[:message],flash[:warning]およびflash[:error]を使用していません。

デビーズはflash[:notice]flash[:alert]を使用します。

documentationでは簡単に見つけることができませんが、の3番目のポイントのすぐ下にあります。コントローラーの設定

これは物事をクリアします。

関連する問題