我有一个相当复杂的视图,有多个窗体,对这些窗体,分页和其他功能进行大量验证。验证失败时,我喜欢使用渲染,因为那样您可以更加具体地了解表单中发生的错误。但是,当我使用渲染不同的编译器错误时,例如“未定义的方法`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. Rails使用PATCH请求渲染或redirect_to
- 3. 使用create时如何处理验证错误!方法
- 4. Rails忽略渲染和redirect_to
- 5. GL11纹理渲染错误
- 6. 使用OpenGL渲染错误
- 7. FBO:在绘制渲染纹理时渲染纹理,错误的纹理映射
- 8. 如何使用ajax/jquery处理laravel5.1中的验证错误
- 9. 渲染验证消息RichFaces
- 10. 渲染前验证页面
- 11. 验证错误与验证错误
- 12. jQuery验证处理错误的CSS
- 13. QT XML验证错误处理
- 14. 处理身份验证错误
- 15. 处理表单验证错误5.4 + vueJS
- 16. 2页验证错误处理Symfony 2
- 17. 未处理拒绝SequelizeUniqueConstraintError:验证错误
- 18. 实时渲染后处理效果
- 19. Rails表单验证错误中的渲染问题
- 20. 在验证错误上渲染自定义内容
- 21. 处理渲染完成
- 22. 渲染上验证用户输入
- 23. 渲染simple_form错误
- 24. System.Net.WebClient与代理验证407错误
- 25. Passport.js本地登录与身体验证和错误处理
- 26. 怎么办文件的验证与错误处理
- 27. 尝试渲染PDF时Grails渲染插件错误?
- 28. 铬渲染错误与边框崩溃
- 29. NullPointerException异常错误与渲染
- 30. TreeView/ScrollView渲染与位图错误?
大解释,让我很好地把握它。谢谢。 – 2014-01-07 22:49:46