我有一個相當複雜的視圖,有多個窗體,對這些窗體,分頁和其他功能進行大量驗證。驗證失敗時,我喜歡使用渲染,因爲那樣您可以更加具體地瞭解表單中發生的錯誤。但是,當我使用渲染不同的編譯器錯誤時,例如「未定義的方法`total_pages'[]:Array」和「undefined model_name」。這是一種情況,當我不得不使用redirect_to或以某種方式解決視圖渲染時出現的錯誤是可行的。謝謝一堆!何時使用渲染與redirect_to處理錯誤驗證
1
A
回答
10
你應該從他們的角度去理解事情。
爲什麼render
代替redirect
:
當您使用
render
,你通過實例化對象這個對象,新創建或更新,收到了一些PARAMS
當試圖保存對象時,會觸發驗證,如果不成功,則將錯誤添加到當前實例中
所以你的對象在內存中包含驗證錯誤。
但是當你使用重定向,重新啓動一個新的堆棧,它不知道在內存中的對象前任何東西,也不可能有任何魔法:
無論對象是保存,並可以從數據庫
獲得持續的數據,或者如果它不救,你可以有你以前存儲在會話中的某些信息
要回答你的問題更近一點:在使用渲染之前,必須實例化頁面所需的所有對象。
這只是邏輯視圖失敗,如果預期的實例變量丟失。
2
首先,這些不是編譯器錯誤 - 它的運行時錯誤。
其次,您應該檢查控制器中的數據以確保其呈現正確進行渲染,或者在視圖中執行一些條件塊以應對這些不同的數據結構。
最後,redirect_to
只是一個,它可以用在這裏四處移動用戶的技術,但是你仍然需要處理這些錯誤,即使在重定向到網頁...
HTH
相關問題
- 1. redirect_to時與返回渲染
- 2. 使用渲染或redirect_to的
- 3. Rails使用PATCH請求渲染或redirect_to
- 4. 使用create時如何處理驗證錯誤!方法
- 5. 錯誤處理時的空驗證403
- 6. Rails忽略渲染和redirect_to
- 7. Direct3D渲染錯誤紋理
- 8. GL11紋理渲染錯誤
- 9. GLSL渲染紋理錯誤
- 10. 使用OpenGL渲染錯誤
- 11. FBO:在繪製渲染紋理時渲染紋理,錯誤的紋理映射
- 12. node.js:渲染錯誤與vash
- 13. 如何渲染表單部分的驗證錯誤 - Rails
- 14. 如何使用ajax/jquery處理laravel5.1中的驗證錯誤
- 15. 渲染前驗證頁面
- 16. 渲染驗證消息RichFaces
- 17. 如何捕捉在Laravel的處理器授權錯誤渲染
- 18. 驗證錯誤與驗證錯誤
- 19. 驗證我的mvc錯誤處理
- 20. i18n自定義驗證錯誤處理
- 21. 未處理拒絕SequelizeUniqueConstraintError:驗證錯誤
- 22. MVC驗證和錯誤處理週期
- 23. QT XML驗證錯誤處理
- 24. 處理身份驗證錯誤
- 25. jQuery驗證處理錯誤的CSS
- 26. 2頁驗證錯誤處理Symfony 2
- 27. Java XML解析/驗證錯誤處理
- 28. 處理表單驗證錯誤5.4 + vueJS
- 29. 渲染助手時處理緩慢link_to
- 30. 實時渲染後處理效果
大解釋,讓我很好地把握它。謝謝。 – 2014-01-07 22:49:46