2012-05-22 13 views
5

Para la aplicación que estoy escribiendo, estoy usando autenticación simple hecha a mano (como se describe en Railscast.com). Usando algún código de la gema NiftyGenerators de Ryan Bates, tengo un modelo de autenticación que tiene algunos métodos útiles para la autenticación. Este módulo está incluido en application_controller.rb.Redirigir a la URL anterior después del inicio de sesión - Rieles

Uno de los métodos que deseo utilizar se llama redirect_to_target_or_default. Sé que esto es lo que necesito para redirigir a un usuario a la página en la que estaban una vez que se hayan autenticado, pero no sé a dónde debo llamar a este método. Si alguien pudiera darme una idea sobre cómo usar este método, lo agradecería enormemente.

ControllerAuthenticaion módulo de código

module ControllerAuthentication 
    # Makes these methods helper methods in the controller that includes this module. 
    def self.included(controller) 
    controller.send :helper_method, 
     :current_admin, :logged_in?, 
     :redirect_to_target_or_default 
    end 

    def current_admin 
    @current_admin ||= Admin.find(session[:admin_id]) if session[:admin_id] 
    end 

    def logged_in? 
    current_admin 
    end 

    def login_required 
    unless logged_in? 
     store_target_location 
     redirect_to login_url, 
     :alert => "You must first log in before accessing this page." 
    end 
    end 
    def redirect_to_target_or_default(default, *args) 
    redirect_to(session[:return_to] || default, *args) 
    session[:return_to] = nil 
    end 
    def redirect_to_or_default(target, *args) 
    redirect_to(target || default, *args) 
    end 
    def store_target_location 
    session[:return_to] = request.url 
    end 
end 

Respuesta

3

qué correr el generador (s) dentro de la gema de Ryan? Debería haber generado una SessionController (consulte link) para usted con este método también en él:

def create 
    @session = Session.new(params[:session]) 
    if @session.save 
    flash[:notice] = "Logged in successfully." 
    redirect_to_target_or_default(root_url) 
    else 
    render :action => 'new' 
    end 
end 

Creo que se puede tener una idea de cómo usarlo, mientras que la lectura de este código. :)

+0

Exactamente lo que estaba buscando! ¡Gracias! – agentbanks217

Cuestiones relacionadas