Ruby on Rails:在sign_up设计之后重定向路径

时间:2013-09-24 10:10:47

标签: ruby-on-rails-3 redirect devise

我正在使用宝石设计。我覆盖了设计注册控制器,一切都很好,但问题是保存后的重定向路径。我想要做的是在用户保存之后,它会重定向到profile_path,但我现在拥有的是用户在重定向到配置文件路径之前需要登录。我怎么解决这个问题? 这是我的注册控制器:

class RegistrationsController < Devise::RegistrationsController
  def new
    super
  end

  def create
      @user= User.new(params[:user])
      if @user.save
    redirect_to profile_path, notice: 'User was successfully created.'
  else
    render action: "new"
  end

  end

  def update
    super
  end
end

这是我的应用程序控制器,它在注册和登录后控制路径:

class ApplicationController < ActionController::Base
    protect_from_forgery

    def after_sign_in_path_for(resource)
        if request.path !~ /^\/admins\//i 
            resource.sign_in_count <= 1  ? '/profile' : root_path
        end
    end
end

在我覆盖寄存器控制器之前,注册后重定向很好。如果有人能提供帮助,真的很高兴。感谢。

1 个答案:

答案 0 :(得分:0)

您必须使用create方法对用户进行签名:

if @user.save
  sign_in(resource_name, resource)
  current_user = @user # !! now logged in
  redirect_to profile_path, notice: 'User was successfully created.'
else

您可以查看create中的原始Devise::RegistrationsController方法,了解其工作原理。