0

我对 Rails 比较陌生,所以我一直在关注 Railscasts 以加快速度,并成功创建了一个登录功能。代码如下:

def create

    user = User.find_by_email(params[:email])
      if user && user.authenticate(params[:password])
        if params[:remember_me]
          cookies.permanent[:auth_token] = user.auth_token
        else
          cookies[:auth_token] = user.auth_token
        end
        redirect_to root_url, :notice => "Logged in!"

      else
        flash.now.alert = "Invalid email or password"
        render "new"
      end

  end

但是,正如代码所示,用户总是被重定向到主页,如root_url.

我想要实现的是以下几点:

  1. 用户在“关于”、“联系”或任何页面上
  2. 用户单击“登录”链接并被带到登录表单页面
  3. 成功(或不成功)登录后,用户将返回到“关于”、“联系”页面或其他页面。

但是,我似乎无法弄清楚我应该用什么代替root_url。我试过request.referer了,但这显然把我带回了登录表单(或者,更确切地说,一条表明我已经登录的消息)而不是用户最初访问登录表单的页面。

我想我可以做某种开关/案例,我将引用页面存储在一个字符串或其他任何东西中,然后重定向回那个,但这听起来有点笨拙并且(就像大多数东西 Rails 一样)我确定有一个我想念的更简单的方法!

谢谢!

4

1 回答 1

0

you can store return_to in session you can refer here,here

于 2012-09-26T13:16:21.433 回答