将用户重定向到注册

Oni*_*han 12 ruby ruby-on-rails devise

使用before_action :authenticate_user!检查,如果用户登录,但它发送给用户login,而不是signup.

试图引导用户到不同的方式signup来代替login,但他们没有成功注册之后,用户发送回原来的页面.

如何发送用户注册并将用户引导回原始页面?

尝试:

before_filter :auth_user

def auth_user
  redirect_to new_user_registration_url unless user_signed_in?
end
Run Code Online (Sandbox Code Playgroud)

路线文件

Rails.application.routes.draw do
  devise_for :installs
  resources :orders
  resources :products
  devise_for :users

  get 'dashboard' => 'pages#dashboard'
  get 'contact' => 'pages#contact'
  get 'cart' => 'carts#index'

  root 'pages#home'
Run Code Online (Sandbox Code Playgroud)

And*_*eko 6

你要找的是一个referer.让你的before_filter工作,你可以覆盖Devise的after_sign_up_path_for:

def after_sign_up_path_for(user)
  request.referer
end
Run Code Online (Sandbox Code Playgroud)

编辑

由于request.referer某种程度上不起作用,我认为你可以使用基于会话的解决方案:

def auth_user
  session[:before_sign_up_path] = request.fullpath
  redirect_to new_user_registration_url unless user_signed_in?
end

def after_sign_up_path_for(user)
  session[:before_sign_up_path]
end
Run Code Online (Sandbox Code Playgroud)