ruby rails - 重定向到原始请求网址

Kap*_*h M 10 ruby ruby-on-rails ruby-on-rails-3

这是我重定向到默认URL(myapp_url)的方法.但是我希望更改重定向以进行身份​​验证后用户输入的请求网址.我怎么做?我在这里搜索了几个选项,比如:back.但是没有去.

用户输入网址,如果未经过身份验证,则会被重定向到登录页面,然后登录后,用户将被重定向到原始请求网址.

def create
   user = User.Authenticate(params[:user_id], params[:password])
 if user
   session[:user_id] = user.id
   redirect_to myapp_url, :notice => "Logged in!"
else
    flash.now.alert = "Invalid email or password"
    render "new"
  end

end
Run Code Online (Sandbox Code Playgroud)

Ald*_*uca 13

您可以阅读Michael Hartl撰写的"Ruby on Rails教程"中有关"友好转发"的章节,了解如何轻松实现它.

基本上你有3个辅助方法:

  1. store_location 在会话中存储用户所需的位置
  2. redirect_back_or(url)将用户重定向到会话中存储的位置,如果未设置,则重定向到url方法参数中包含的位置
  3. clear_return_to通过该redirect_back_or方法"内部"使用,以便在使用后清除此信息

然后你使用这些方法:

A)当您看到访客用户尝试访问需要身份验证的页面,store_location然后再将其重定向到登录页面.
B)当用户登录时,您使用redirect_back_or(url)它将其重定向到正确的位置(如果当然存在)

这是对这项工作的概述,你得到了这个想法,但我建议阅读该章的实现(少数)细节.


Mik*_*iet 1

您需要在身份验证重定向之前以及成功身份验证重定向到此路径后在会话中保存路径。