2017-09-18 248 views
0

如果保存失敗,我想重定向到先前的視圖,但出現錯誤消息。如何將對象從一個控制器傳遞到另一個控制器

redirect_to user_path(@user_id), errors: @user.errors 

,但在視圖中,當我檢查errors我得到一個未定義的變量錯誤。

我沒有使用相同的控制器新建和創建,所以我不能在new.html.erb中有@ user.errors.any。我有兩個不同的控制器,一個是那裏的形式,另一個是負責創建的控制器,如果創建沒有發生,我需要重定向到前一個控制器。

+0

您必須將flash [:error]設置爲預期的錯誤消息,那麼您應該可以使用相同的flash [:error]在視圖中訪問它。 – Mohanraj

+0

我不想在這裏使用flash @Mohanraj – gates

回答

0

你必須通過redirect_to的助手像下面裏面的參數,

redirect_to user_path(id: @user_id, error: @user.errors.messages) 

請檢查耙路線和傳遞適當鍵ID,無論是:ID,或:user_id說明

+0

params [:error] =>「#」 好吧,現在我可以在params中得到錯誤,但它是這樣來的。我如何解析這個對象? – gates

+0

嘗試轉換爲json像@ user.errors.to_json – Mohanraj

+0

我認爲,我會更喜歡user.errors.messages ..謝謝 – gates

0

必須檢查params[:errors]errors

+0

我無法訪問.. params [:errors],它顯示爲零。 – gates

1

您可能需要使用render,而不是redirect_to。 事情是這樣的:

# controller_1 
def step_1 
    @user = User.new 
    @user.do_something 
    ... 
end 

# controller_2 
def step_2 
if @user.save? 
    # redirect to another... 
else 
    render 'controller_1/step_1` 
end 
end 

然後在視圖step_1.html.erb,可以打印出的@user錯誤與@user.errors

相關問題