2017-08-31 114 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方法是不同的方法。

相關問題