2017-08-31 85 views
0

我试图让设备的用户帐户在每次更改用户帐户时都不需要更改密码的情况下进行更新。要做到这一点,需要我更改update_resource方法,但我得到一个DoubleRenderErrror,我不知道如何解决此问题。在ActiveAdmin内为设计执行`update_resource`时获取DoubleRenderError

这里是我的代码,因为它代表:

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 

回答

1

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

+0

没有骰子:(,但是任何方式都可以, – Thermatix

+0

你也可以在这里找到类似问题的解决方案 [link_here](https://stackoverflow.com/questions/21610090/double-render-error-rails) –

+0

我很高兴你找到解决方案:) –

0

我的错误是想update_resource我是压倒一切的是一个超越自身的update方法时,它不是,作为一个结果,我跑覆盖,然后运行update方法从而使/重定向两次的方法。

删除所有呈现/ redirect_to的东西解决了这个问题。

我意识到自己的错误,在GitHub上看到this issue后,特别是这个代码片段:

def update_resource(object, attributes) 
    puts "==================before update=====================" 
    debugger 
    object.update_attributes(*attributes) 
    puts "=================after update=====================" 
end  
def update(options={}, &block) 
    super do |success, failure| 
    block.call(success, failure) if block 
    failure.html { render :edit } 
    end 
end 

,你可以看到,更新方法和update_resource方法是不同的方法。

相关问题