设计:通过Ajax更新(编辑)用户

时间:2013-11-18 12:01:42

标签: ruby-on-rails ajax devise

我已经成功通过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

所以看起来我走错了路。

1 个答案:

答案 0 :(得分:0)

我通过更改

修复了它
if update_resource(resource, account_update_params)

到这个

if resource.update_without_password(params[resource_name])