2016-03-25 13 views
0

Im Gebrauch Gerät für sign_in \ upRails Gerät und leitet

und hat before_action :authenticate_user!

Mein Problem ist, wenn der Benutzer nicht angemeldet, und ich in zu unterzeichnen klicken Sie Formular für sign_in rufen und nach füllen sie umleiten mich auf der gleichen Seite

Für Beispiel- ich bin nicht angemeldet, und ich bin auf root-Seite und wollen products/1 sehen i show modal klicken erscheint i eingeben mein Beglaubigungsschreiben und es leitet mich auf die gleiche Seite

Aber nach Zeichen in i

bei products/1

Sitzungssteuerung sein wollen

class SessionsController < Devise::SessionsController 
    respond_to :js 
    layout false 
    def create 
    self.resource = warden.authenticate(auth_options) 

    if resource && resource.active_for_authentication? 
     sign_in(resource_name, resource) 
    end 
    end 

end 

Vorlage create.js.erb

<% if user_signed_in?%> 
<%= request.referrer%> 
    window.location.href='<%= request.referrer %>' 
<% else %> 
    $('#login_popup input').parent().addClass('inputbox_error'); 
    $('#log_error_messages').show(); 
    $('input').keydown(function(){ 
    $(this).parent().removeClass('inputbox_error') 
    $('#log_error_messages').hide(); 
    }) 
<% end %> 

Was soll ich nach <% if user_signed_in?%> ändern?

Antwort

-1

Wenn Sie Benutzer nach der Anmeldung umleiten in Sie after_sign_in_path_for Methode in Devise verwenden können :: SessionsController

Zuerst speichern die URL, die Sie auf in session waren auf zeigen Login modal wie:

session[:login_redirect] = url 

Dann Nach dem Anmelden den Benutzer auf diese URL umleiten.

class SessionsController < Devise::SessionsController 
    def after_sign_in_path_for(resource) 
    session[:login_redirect] 
    end 
end 

Auch Ihre routes.rb mit Session-Routen aktualisieren:

devise_for :user, :controllers => {:sessions => "sessions"} 
Verwandte Themen