Pav*_*van 5 ruby-on-rails devise ruby-on-rails-4
我会尝试以简单的方式.我在页面上有一个注册按钮 (重定向到/users/sign_up页面)/visitors/owner-faq.注册后我想要URL这个页面(/visitors/owner-faq),以便我可以使用它来设置类似的内容
if sign_up_from_url == '/visitors/owner-faq'
@user.role = 'Owner'
end
Run Code Online (Sandbox Code Playgroud)
我试着request.referer在控制器中使用,但它/users/sign_up没有给我/visitors/owner-faq.然而,当我<%= url_for(:back) %>在注册视图页面中使用时,它给了我/visitors/owner-faq我想要的.但是我无法弄清楚如何在控制器中访问它.任何人都可以建议我如何在控制器中访问该值?我正在使用Devise进行注册.
jvn*_*ill 18
如果用户在/visitors/owner-faq页面上并单击注册链接,则会发生以下情况:注册页面中的引荐来源是/visitors/owner-faq.这就是为什么url_for(:back)在该页面上工作的原因.现在,在注册页面中提交表单后,引用者现在已更改为注册网址,这是有道理的.
您要做的是在用户访问注册页面时将引荐来源保存在会话中.因此,在为注册页面提供服务的操作中(假设用户是新操作)
class UsersController < ApplicationController
def new
session[:referrer] = request.referrer
end
end
Run Code Online (Sandbox Code Playgroud)
因此,当用户提交注册表单时,您可以访问该会话
def create
referrer = session.delete(:referrer)
user = User.new
user.role = 'owner' if referrer == '/visitors/owner-faq'
user.save!
end
Run Code Online (Sandbox Code Playgroud)