2016-08-18 8 views
0

私は現在自分の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 

希望の行動を取る?

+0

これは、デフォルトの実装であり、ログインの詳細が間違っていると新しいページにリダイレクトされます...しかし、あなたは共有できますsessions_controller.rb – Milind

+0

私のsessions_controller.rbは基本的にDeviseを追加する前と同じです。だから今はDeviseとは関係がありません –

+0

あなたの 'app/controllers'フォルダにdevee session_controllerを生成してから、試してみてください。 –

答えて

関連する問題