登录前重定向到页面

时间:2014-08-01 15:11:36

标签: ruby-on-rails

现在我遇到登录问题。我希望用户转到他/她按下登录按钮的上一页。在我的代码中,我现在只有redirect_to返回,它只是将用户返回一个级别,但我希望它是两个级别。我该怎么做?

class SessionsController < ApplicationController
    def new
    end

    def create
        user = User.find_by(email: params[:session][:email].downcase)
        if user && user.authenticate(params[:session][:password])
            sign_in user
            redirect_to back
        else
            flash.now[:error] = 'Invalid email/password combination'
            render 'new'
        end
    end

    def destroy
        sign_out
        redirect_to root_url
    end

end

谢谢!

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是在他们的操作方法中遵循outline that the devise gem provides。 TL; DR - 将路径存储在会话中,并在登录后将其用作重定向。

答案 1 :(得分:1)

其中一个解决方案可能会将网址存储在Cookie中,并在登录后重定向到该网址

cookies[:return_to] = {
  value: request.fullpath, 
  expires: 1.hour.from_now
}

redirect_to sign_in_path
登录后

,请致电

path = cookies[:return_to]
cookies.delete(:return_to)
redirect_to path