我对 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
.
我想要实现的是以下几点:
- 用户在“关于”、“联系”或任何页面上
- 用户单击“登录”链接并被带到登录表单页面
- 成功(或不成功)登录后,用户将返回到“关于”、“联系”页面或其他页面。
但是,我似乎无法弄清楚我应该用什么代替root_url
。我试过request.referer
了,但这显然把我带回了登录表单(或者,更确切地说,一条表明我已经登录的消息)而不是用户最初访问登录表单的页面。
我想我可以做某种开关/案例,我将引用页面存储在一个字符串或其他任何东西中,然后重定向回那个,但这听起来有点笨拙并且(就像大多数东西 Rails 一样)我确定有一个我想念的更简单的方法!
谢谢!