所以,我正在尝试修复我们在POST中进行渲染的代码,这实际上为用户搞砸了后退按钮(以及刷新按钮!)。摆脱讨厌的“你确定要再次发布”通常只是转向POST-> redirect-> GET模式,但使用某种短暂的cookie来处理我需要传输的错误(如以及用户键入的cookie,以便他不会丢失输入)。在playframework中,这是flash cookie(在以下GET请求中删除)。
我是rails的完全新手,但在java中拥有大量重量级和轻量级http框架的经验。
如果有人知道现有的一个,那么使用GET控制器方法和POST控制器方法的完整示例会非常惊人吗?
在游戏中,我只是在我的帖子控制器方法中调用validation.keep()(保存错误)和params.flash()(保存用户输入),它会自动将错误映射到GET上的表单字段。我不做任何额外的事情。基本上是这样的(参见postUser方法)https://github.com/deanhiller/timecardz/blob/master/app/controllers/OurPattern.java
我希望ruby也有一些简单的东西。
感谢, 迪安
答案 0 :(得分:3)
Rails没有开箱即用。对于它的价值,它的标准"在Rails中发布帖子后呈现。代码流是这样的:
因此,它实际上内置于rails中以获得您正在尝试解决的行为,因为它取决于整个渲染中的模型实例是相同的。
也就是说,Rails确实有一次性闪存参数,因此您可以将发布的表单数据存储在闪存中,并在下一个请求中重新更新验证对象。只需注意在主要验证者之外进行任何验证的代码。例如,object.valid?
和object.save
需要始终导致相同的错误,但没有什么可以阻止您(错误地)在before_save
回调中添加验证错误。 / p>
A similar SO post和this PRG github project看起来非常有用,可以避免在这里单打独斗。