在ActiveAdmin中为`devise执行`update_resource`时获取DoubleRenderError

时间:2017-08-31 09:46:02

标签: ruby-on-rails ruby-on-rails-4 devise activeadmin

我试图更新设备的用户帐户,而无需在每次更改用户帐户时更改密码。要做到这一点,我需要更改update_resource方法,但我得到的是DoubleRenderErrror,而且我不确定如何解决这个问题。

这是我的代码:

  controller do 
    protected
    def update_resource(resource, params)
      if params.first[:password].blank?
        resource.update_without_password(params.first)
      else
         resource.update_attributes(params.first)
      end
      if resource.errors.blank?
        redirect_to admin_users_path, :notice => "User updated successfully."
      else
         render :edit
      end
    end
  end

2 个答案:

答案 0 :(得分:1)

尝试使用redirect_to admin_users_path, :notice => "User updated successfully."替换现有代码return redirect_to admin_users_path, :notice => "User updated successfully."。我希望这会有所帮助。

答案 1 :(得分:0)

我的错误是认为我覆盖的方法update_resourceupdate方法的覆盖本身,当它不是,因此,它正在运行我的覆盖,然后运行{{1}因此,方法渲染/重定向两次。

删除所有渲染/ redirect_to东西解决了这个问题。

我在GitHub上看到this issue后发现了我的错误,特别是这段代码:

update

如您所见,update方法和update_resource方法是不同的方法。