ruby-on-rails - ruby rails - 重定向到原始请求 url

标签 ruby-on-rails ruby ruby-on-rails-3

这是我重定向到默认 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 个辅助方法:

  1. store_location 在 session 中存储用户想要的位置
  2. redirect_back_or(url) 将用户重定向到 session 中存储的位置,或者,如果未设置,则重定向到 url 方法参数中包含的位置
  3. clear_return_toredirect_back_or 方法“内部”使用,一旦使用就清除这条信息

然后你使用这些方法:

A) 当您看到 guest 用户尝试访问需要身份验证的页面时,请在将他重定向到登录页面之前使用 store_location
B) 当用户登录时,您使用 redirect_back_or(url) 将他重定向到正确的位置(当然如果存在的话)

这是对它如何工作的概述,你明白了,但我建议阅读那一章以了解实现的(少量)细节。

关于ruby-on-rails - ruby rails - 重定向到原始请求 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10052479/

相关文章:

ruby-on-rails - 在 seeds.rb 中创建模型及其子项?

ruby-on-rails - 没有运算符的 Ruby 惰性 if 语句

ruby-on-rails - Ruby FileUtils.mkpath 在不同环境下的行为不同

ruby-on-rails - 无法在 CommentsController#destroy 中重定向到 Nil(多态关联)

ruby-on-rails-3 - haml 中的 Ruby block 代码

ruby-on-rails - 用 Grape 构建 XML API

ruby-on-rails - 生成电子邮件地址图像或其他不易被抓取的内容

ruby-on-rails - 带有默认值 : how to DRY? 的参数散列的 Ruby 方法

ruby - 访问哈希值和数组 Ruby

ruby-on-rails-3 - Rails 和 Postgres - 从 .cvs 复制到表,同时跳过 created_at 列