我已经成功通过Devise中的Ajax登录/注册(参见博客文章中的文章)。但我无法使用ajax 更新操作。我希望用户能够通过ajax编辑他的设置,接收正确的JSON响应。
因此尝试从Devise复制更新方法,我编辑它以发回适当的JSON响应:
class RegistrationsController < Devise::RegistrationsController
def update
self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
prev_unconfirmed_email = resource.unconfirmed_email if resource.respond_to?(:unconfirmed_email)
if update_resource(resource, account_update_params) # <<< PROBLEM IS HERE
sign_in resource_name, self.resource, :bypass => true
render json: resource, status: :ok
else
clean_up_passwords resource
render json: resource, status: :not_acceptable
end
end
end
这给了我一个错误:
undefined local variable or method "account_update_params"
account_update_params 是Devise文件中的受保护方法 - 如果我将其复制+粘贴到我的子类中:
def account_update_params
devise_parameter_sanitizer.sanitize(:account_update)
end
它给了我下一个错误
devise_parameter_sanitizer not found
所以看起来我走错了路。
答案 0 :(得分:0)
我通过更改
修复了它if update_resource(resource, account_update_params)
到这个
if resource.update_without_password(params[resource_name])