【发布时间】:2012-11-02 11:48:57
【问题描述】:
假设我有一个 Rails 控制器方法,它在用户提交表单时执行。现在,用户提交表单,当方法运行时(并且没有向用户呈现下一页),用户点击“刷新”。会发生什么?该方法会停止运行并重新启动,还是会有另一个线程再次运行该方法?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 controller refresh
假设我有一个 Rails 控制器方法,它在用户提交表单时执行。现在,用户提交表单,当方法运行时(并且没有向用户呈现下一页),用户点击“刷新”。会发生什么?该方法会停止运行并重新启动,还是会有另一个线程再次运行该方法?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 controller refresh
我必须自己找到答案,这就是我发现的(使用 chrome 检查器上的网络选项卡)
浏览器发送以下请求:
用户点击刷新,导致:
换句话说,它不会重新提交表单,而是重新打开编辑表单。
现在...如果他们没有点击刷新,而是第二次点击提交,那将发送第二次
这将再次调用您的控制器方法。
如果这是一个问题,您可能需要添加一些逻辑来忽略或以其他方式处理后续提交(简单状态机?)。还记得那些电子商务网站在你买东西后会收到“不要点击提交两次”之类的消息的日子......他们没有那种逻辑:)
【讨论】: