这是我重定向到默认 url (myapp_url) 的方法。但我想更改重定向以转到用户在身份验证后输入的请求 url。 我怎么做?我在这里搜索了几个选项,比如 :back。但是不行。
用户输入一个url,如果未通过身份验证则被重定向到登录页面,然后登录后用户将被重定向到原始请求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
最佳答案
您可以阅读 the chapter about "Friendly forwarding"在 Michael Hartl 的“Ruby on Rails 教程”中了解如何轻松实现它。
基本上你有 3 个辅助方法:
store_location
在 session 中存储用户想要的位置redirect_back_or(url)
将用户重定向到 session 中存储的位置,或者,如果未设置,则重定向到url
方法参数中包含的位置- 和
clear_return_to
由redirect_back_or
方法“内部”使用,一旦使用就清除这条信息
然后你使用这些方法:
A) 当您看到 guest 用户尝试访问需要身份验证的页面时,请在将他重定向到登录页面之前使用 store_location
。
B) 当用户登录时,您使用 redirect_back_or(url)
将他重定向到正确的位置(当然如果存在的话)
这是对它如何工作的概述,你明白了,但我建议阅读那一章以了解实现的(少量)细节。
关于ruby-on-rails - ruby rails - 重定向到原始请求 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10052479/