undefined 方法 'with_indifferent_access' for nil:NilClass



我正在尝试使用设计覆盖重置密码控制器,但无论如何它给了我这个错误。我不明白实际原因是什么。我正在分享我的代码

passwords_controller.rb

class Api::V1::PasswordsController < Devise::PasswordsController
    skip_before_action :require_login!

    def new
        @user = User.new
    end
    def create
      @user = User.send_reset_password_instructions(params[:user])
      if successfully_sent?(@user)
        head :status => 200
      else
        render :status => 422, :json => { :errors => @user.errors.full_messages }
      end
    end
end

路线

 devise_for :users,controllers: { 
    sessions: 'api/v1/sessions',
    registrations: 'api/v1/registrations',
    :passwords => 'api/v1/passwords'
  }

邮差

我正在使用参数访问此URL

http://localhost:3000/users/password
Method - Post
Body (raw)
    {
        "email": "some-email@gmail.com"
    }

收到此错误 NoMethodError (nil:NilClass 的未定义方法 'with_indifferent_access'):

必须在用户实例而不是模型上调用send_reset_password_instructions。

我在模型上称send_reset_password_instructions。它应该在用户实例上调用。这是代码

def create
  @user = User.find_by(email: params[:email])
  @user.send_reset_password_instructions
  if successfully_sent?(@user)
    head :status => 200
  else
    render :status => 422, :json => { :errors => @user.errors.full_messages }
  end
end

相关内容

  • 没有找到相关文章

最新更新