ユーザーがフォームフィールドにemail_id列を含む詳細を入力できるフォームがあります
ユーザーがログインしている場合、次のリンクが表示されます
" NOT USER NAME " 例 " NOT VIREN NEGI " は、デバイス セッションを破棄するための ajax リクエストとなる電子メール フィールドに対するものです。
ユーザーがリンクをクリックすると、devise セッションが破棄され、ajax が成功すると、上記のアンカー タグが消えます。
このソリューションは、Devise の destroy メソッドに Moneypatch を適用することで実装しました。
class DeviseSessionsController < DeviseController
def destroy
.... DEVISE CODE ...
.... DEVISE CODE ...
.... DEVISE CODE ...
respond_to do |format|
if request.xhr? **## My Hack**
format.js { render :partial => 'users/signout' } **## render signout partial on ajax request**
else
format.any(*navigational_formats) { redirect_to redirect_path }
format.all do
method = "to_#{request_format}"
text = {}.respond_to?(method) ? {}.send(method) : ""
render :text => text, :status => :ok
end
end
end
end
end
これはすべて機能しているように見えますが、それ以来、私はこれに満足していません
- devise が更新され、将来的に destroy メソッドが現在とは異なるように見える可能性がある場合は適していません
- 私はdevise/sessions_controllerの他のすべてのアクションメソッドをコピーして、deviseが問題なく動作するようにしました
誰でもこれについて私を助けてくれますか
モンキーパッチが悪いと答えて、質問が投稿された理由をすべてモンキーパッチについて読むように頼むのは避けてください(私はそれを知っています)。
ありがとうございました