Ruby on rails 登录前重定向到页面

Ruby on rails 登录前重定向到页面,ruby-on-rails,Ruby On Rails,现在我有一个登录问题。我希望用户转到上一页,在那里他/她按下了登录按钮。在我现在的代码中,我只是将_重定向到back,这只会将用户发送回一个级别,但我希望它是两个级别。我该怎么做 class SessionsController < ApplicationController def new end def create user = User.find_by(email: params[:session][:email].downcase)

现在我有一个登录问题。我希望用户转到上一页,在那里他/她按下了登录按钮。在我现在的代码中,我只是将_重定向到back,这只会将用户发送回一个级别,但我希望它是两个级别。我该怎么做

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
class sessioncontroller

谢谢

最简单的解决方案可能是遵循他们的操作指南。TL;DR-将路径存储在会话中,并在登录后将其用作重定向。

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

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

如果没有人能给你一个“Rails方式”的答案,你可以用javascript来破解这个问题:谢谢auL5agoi,这将是我最后的手段:)谢谢,这只需要一点编辑就行了。我改为request.referer,因为我在多个地方登录了。谢谢,没有使用Desive,尽管我不确定是否可以使用它,但还是谢谢!Desive并不重要——它是在会话中存储路径的概念。