ruby-on-rails - 如何在Rails 4中获取上一页的引荐来源网址

标签 ruby-on-rails ruby-on-rails-4 devise

我将尝试以一种简单的方式来说明它。我在/users/sign_up页面上有一个注册按钮(重定向到/visitors/owner-faq页面)。我想要注册后此页面的URL(/visitors/owner-faq),以便我可以使用它来设置类似

if sign_up_from_url == '/visitors/owner-faq'
 @user.role = 'Owner'
end

我试图在 Controller 中使用request.referer,但是它给了我/users/sign_up而不是/visitors/owner-faq。但是,当我在注册 View 页面中使用<%= url_for(:back) %>时,它给了我想要的/visitors/owner-faq,但是我不知道如何在 Controller 中访问它。谁能建议我如何在 Controller 中访问该值?我正在使用设计进行注册。

最佳答案

如果用户在/visitors/owner-faq页面上并单击注册链接,则发生的情况是注册页面中的引荐来源网址为/visitors/owner-faq。这就是url_for(:back)在该页面上起作用的原因。现在,在注册页面中提交表单后,引荐来源网址现在更改为注册网址,这很有意义。

您要做的是在用户访问注册页面时将引荐来源网址保存在 session 中。因此,在为注册页面提供服务的操作中(例如,这是用户的新操作)

class UsersController < ApplicationController
  def new
    session[:referrer] = request.referrer
  end
end

因此,当用户提交注册表单时,您可以访问 session
def create
  referrer  = session.delete(:referrer)
  user      = User.new
  user.role = 'owner' if referrer == '/visitors/owner-faq'
  user.save!
end

关于ruby-on-rails - 如何在Rails 4中获取上一页的引荐来源网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30684975/

相关文章:

javascript - 为什么 $(window).load() 有效但 $(document).ready() 无效?

ruby-on-rails - ExtJs4 json data.store 和 Rails

ruby-on-rails - 如何设置父应用程序模型和安装引擎模型之间的has_many关联?

ruby-on-rails - 如何一一显示设计错误消息

ruby-on-rails - Rails 3 +Devise + RSpec : undefined method 'visit'

ruby-on-rails - Rails activeadmin 无法检测到现有表的自动增量字段

ruby-on-rails - 我的 Rails Javascript list 文件既不编译也不包含任何必需的文件

ios - 已完成 406 Not Acceptable in design

javascript - rails 4 : display spinner with javascript on form submit

twitter-bootstrap - 如何停止 active_admin css.scss 文件更改我的应用程序的整体外观