でエラー配列を移入し、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配列に戻されますが、ここでは悪いログインでフラッシュに渡されます。
回答は回答として投稿してください(後で受け入れることができます)。編集: – oers
回答は回答ではなく、編集として投稿してください。そうでなければ、回答は未回答のままです – Calavera