2012-05-22 2 views
5

Для приложения, которое я пишу, я использую простой ручной аутентификацию (как описано на Railscast.com). Используя некоторый код из Gem Rifty Bates 'NiftyGenerators, у меня есть модель аутентификации, которая имеет некоторые полезные методы для аутентификации. Этот модуль включен в application_controller.rb.Перенаправление на предыдущий URL после входа в систему - Rails

Один из методов, который я хочу использовать, называется redirect_to_target_or_default. Я знаю, что мне нужно перенаправить пользователя на страницу, на которой они были, после того, как они прошли проверку подлинности, но я не знаю, где я должен назвать этот метод? Если бы кто-нибудь мог дать мне представление о том, как использовать этот метод, я был бы очень признателен.

ControllerAuthenticaion Модуль Код

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 

ответ

3

ли вы запустить генератор (ы) в пределах драгоценного камня Райана? Он должен генерировали SessionController (см link) для вас также этого метода в нем:

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 

Я думаю, что вы можете получить представление о том, как использовать его во время чтения этого кода. :)

+0

Именно то, что я искал! Благодаря! – agentbanks217

Смежные вопросы