2014-04-04 47 views
0

這裏是一個頻繁的情況:用戶有一個儀表板爲了向用戶顯示一些相關的信息。此外,使用可以在他的儀表板中執行一些操作。根據抽象,每個這些動作都有自己的控制器,它們並不都在儀表板控制器中。例如,爲了更新有關用戶的某些信息,您有user controller而不是dashboard controllerdashboard controller僅用於呈現一些信息。
好嗎?現在您的儀表板中有一個表單,將輸入發佈到任意控制器,並且我們想要在儀表板中呈現結果(成功時爲成功消息,如果失敗,則預填充表單,如果失敗則顯示錯誤)。如果我們在控制器中使用redirect_to,我們將失去驗證錯誤和預先填充。如果我們使用render,那麼儀表板模板中將會有未被證實的變量,我們會遇到一些錯誤。
處理這個問題有哪些技巧?
P.S:有一些類似的問題,但答案是使用render,但它導致了上述問題,不起作用。軌道保持模型驗證錯誤

回答

1

你可以通過ajax來完成,並根據成功/失敗刪除/添加合適的html元素。

或者你可以有

if @user.save? 
    redirect_to dashboard_path 
else 
    @my_instance_variable = InstanceVariable.first 
    render "dashboard" 
end 
+0

實例變量無關這個控制器斷裂抽象。不是嗎? – Pooya

+0

是的,但是爲了你想要的選擇,要麼做或者使用ajax。如果你使用的是rails 4,你可以把它們放在一個包含 –

+0

的問題中,或者只是用一個在before_filter中調用的私有控制器方法來獲取它們 –