ruby rails – 重定向到原始请求url

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

用户输入url,如果未经过身份validation,则会被重定向到登录页面,然后登录后,用户将被重定向到原始请求url。

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 

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

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

  1. store_location用于在会话中存储用户所需的位置
  2. redirect_back_or(url)将用户重定向到会话中存储的位置,如果没有设置,则重定向到url方法参数中包含的位置
  3. clear_return_toredirect_back_or方法使用“内部”来清除这条信息

然后你使用这些方法:

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

这是一个关于如何工作的概述,你得到了这个想法但我建议阅读该章的实现(很少)细节。

您需要在身份validation重定向之前保存会话中的路径,并在成功validation重定向到此路径之后。