私は現在自分のWebアプリケーション用にDeviseをカスタマイズしています。 私はログインとログアウトにいくつか問題があります。Rails with Devise - ログインフォームが悪いログインで部分的にリダイレクトされる、ログアウトが再ロードされない
問題#1:私は
_new.html.erb、カスタムフォームに工夫/セッション/ new.html.erbビューを変更し、部分的に変えてきました私はホームページ上で、この部分をレンダリングしてい
<br/><br/>
<h3 id="login-box-label">Sign in here:</h3>
<br/>
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<%= f.label :login, "Login:", class: "login-label" %>
<%= f.text_field :login, autofocus: true, class: "login-input" %>
<br/><br/>
<%= f.label :password, "Password:", class: "login-label" %>
<%= f.password_field :password, autocomplete: "off", class: "login-input" %>
<br/><br/>
<%= f.submit "Log in", class: "login-button" %>
<% end %>
_new.html.erb
。入力された資格情報が正しいが、入力された資格情報が間違っている場合、エラーを表示する代わりに、フォーム提出によって、ユーザーがエラーが表示される通常の/devise/sessions/new.html.erbにリダイレクトされます。私はこのページを完全に避けたい。なぜここをリダイレクトするのですか?それをやめて、部分をレンダリングするdivにエラーを表示させるにはどうしたらいいですか?
問題#2:
これは小さな問題のように見えるかもしれませんが、それは私が起きていたいものではありません。私がログインしていたとき、私は自分のサイトのログアウトボタンをクリックすると、私はアプリケーションコントローラ言った:私は、しかし、とき
<%= link_to 'Logout', destroy_user_session_path, remote: true, method: "delete", class: "logged-button", id: "logout" %>
:さらに
def after_sign_out_path_for(user)
root_path
end
を、ここに私のログアウトボタンでホームページからログアウトすると、ログアウトは成功しますが、ホームページは実際にリロードされません。ターボリンクでさえも同じページなので、私は仮定します。コントロールパネル/ログアウトボタンがログインボタンに変わるように、ページを更新する必要があります。私は何が欠けていますか? Gokul Lで示唆したように、私は、工夫のためのユーザー・セッションコントローラを生成した
EDIT、それは次のようになります。私はここで追加する必要が何ビット
class Users::SessionsController < Devise::SessionsController
# before_action :configure_sign_in_params, only: [:create]
# GET /resource/sign_in
# def new
# super
# end
# POST /resource/sign_in
# def create
# super
# end
# DELETE /resource/sign_out
# def destroy
# super
# end
# protected
# If you have extra params to permit, append them to the sanitizer.
# def configure_sign_in_params
# devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute])
# end
end
希望の行動を取る?
これは、デフォルトの実装であり、ログインの詳細が間違っていると新しいページにリダイレクトされます...しかし、あなたは共有できますsessions_controller.rb – Milind
私のsessions_controller.rbは基本的にDeviseを追加する前と同じです。だから今はDeviseとは関係がありません –
あなたの 'app/controllers'フォルダにdevee session_controllerを生成してから、試してみてください。 –