2016-09-12 3 views
0

私はdevilsでrails5ブログアプリを作っています。コメントコントローラーでは、ユーザーが「before_action:authenticate_user!」を使用しているかどうかをチェックします。Rails 5 - devysのためにajax flashメッセージを実装する方法

したがって、ユーザーがログインしている場合、create commentメソッドが実行され、サーバー応答がAJAX経由でクライアントに返されます。ただし、ユーザーがログインしていない場合は、 "before_action:authenticate_user!" checkはレスポンスに401認証エラーを作成します(ブラウザログに表示されます)。そのユーザは、彼/彼女がログインせずにコメントを入力することができないことを知っているので、私はちょうどコメントボックスの上またはどこかのページにフラッシュメッセージを表示したい

は、私が持っている多くの類似の質問があります見つかったが、彼らは非常に混乱しているようで、ソリューションのどれも私のために働いていない。彼らのほとんどは、devise confg(例えばconfig.http_authenticatable_on_xhr = false)の変更について話し、authenticate_userメソッドなどをオーバーライドします。

誰かが説明するだけで、ユーザーにログインしてコメントを追加するという警告メッセージを表示することはできますか(ajax呼び出し)。私はAJAX呼び出しの自動リダイレクトを望んでいません。

答えて

1

のjQueryで不正エラーをキャッチし、あなたのフラッシュメッセージを表示し、その後フラッシュ法を作成します。

@flash = (content, type) -> 
    content = "<div class='container'><div class=\"alert alert-#{type}\">#{content}</div></div>" if type? 
    $('#flash').clearQueue().hide().html(content).fadeIn('slow').delay(3000).fadeOut('slow') 

$(document).ajaxError (e, xhr, settings) -> 
    flash("Unauthorized", "danger") if xhr.status == 401 
関連する問題