ruby-on-rails - 登录后将用户返回到上一页(Rails)

标签 ruby-on-rails

在 rails 2.3.8 站点上,我在每个页面上都有登录链接(将用户带到单独的登录页面)。成功登录后,用户当前被重定向到 root。相反,我想重定向到他们之前查看的页面。

我试过使用 request.referer:

redirect_back_or_default(request.referer)

其中redirect_back_or_default:
def redirect_back_or_default(default)
    redirect_to(session[:return_to] || default)
    session[:return_to] = nil
end

但是,即使登录成功,也会产生“访问被拒绝”错误。

最佳答案

我不会尝试重定向到引用者,而是设置 session[:return_to]

您需要一个 before 过滤器,在您对所有操作进行身份验证之前运行:

def store_return_to
  session[:return_to] = request.url
end

然后将您的重定向更改为
redirect_back_or_default()

关于ruby-on-rails - 登录后将用户返回到上一页(Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9489660/

相关文章:

ruby-on-rails - 事件记录来自实例的所有查询

ruby-on-rails - Resque Web 前端 - 内部服务器错误 - RuntimeError - 不允许进行 ERR 操作

ruby-on-rails - Rails 3.2 capybara Capybara::ElementNotFound:无法找到 xpath "/html"

javascript - 通过轮询检查 Capybara 中是否存在 html 标签的特定属性

mysql - 未知的 MySQL 服务器主机 'db' Rails 和 Docker

jquery - iCheck 复选框不显示

ruby-on-rails - 设置 RVM 路径?

ruby-on-rails - 引用连接 Rails 表中枚举的查询

ruby-on-rails - Rails 3 日期时间和时间 beginning_of_day end_of_day 格式不正确

ruby-on-rails - rails : Keeping user spoofing checks DRY