需要用devise进行ajax side-registration。创建了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': ''}
但是我想知道如何以正常方式解决这个问题?
答案 0 :(得分:0)
一旦你正确设置了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中的代码通过通知用户来处理错误。