繁体   English   中英

设计,空白password_confirmation

[英]Devise, blank password_confirmation

需要进行ajax侧面注册。 创建的RegistrationsController:

class RegistrationsController < Devise::RegistrationsController

  def create 
    if request.xhr?
      build_resource(sign_up_params)

      if resource.save
        ...
      end
    else
      super
    end
  end

end

注意,如果我没有在XHR中传递该字段,或者该字段为空,并且Angular在执行$ http.post之前未收集它,则该模型不会验证密码的确认

在Angular中$scope.reg = {'password_confirmation': ''}了一段时间,对初始$scope.reg = {'password_confirmation': ''}进行了硬编码,但想知道如何以正常方式解决此问题?

正确设置Devise后,不太可能无法验证模型的密码确认。 如果注册实际上创建了一个新用户,您将确定是否不会运行验证。 如果未创建新用户,则验证可以正常进行。

问题似乎在于您的create动作。 看来您的if resource.save没有else块,这是当resource.save由于验证错误而失败时所调用的。 您的create动作应类似于:

  def create
    # seems unnecessary to check if request is xhr
    build_resource(sign_up_params)
    if resource.save
      render json: resource
    else
      render :json => { :errors => @model.errors.full_messages }, :status => 422
    end
  end

然后,只需在Angular中包含通过通知用户来处理错误的代码即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM