2012-11-02 50 views
2

假设我有一个Rails控制器方法,它在用户提交表单时执行。现在,用户提交表单,并且在方法正在运行(并且未向用户呈现下一页)时,用户点击“刷新”。会发生什么?该方法是否会停止运行并重新启动,或者是否会有另一个线程再次运行该方法?Rails控制器方法执行

回答

1

我必须找到答案了这个自己,这里是我发现了什么(使用Chrome检查网络选项卡)

浏览器发送以下请求:

  • GET /型材/ 123 /编辑(用户带来了编辑表格)
  • PUT /简档/ 123(用户提交表格)

在使用者命中刷新,这将导致:

  • GET /型材/ 123 /编辑

换句话说,它不会重新提交表单,它重新带来了编辑表单。现在

...如果不是击中刷新他们打提交第二次,将发出第二

  • PUT /型材/ 123

这将调用您的控制器方法的第二时间。

如果这是一个问题,您可能需要添加一些逻辑来忽略或以其他方式处理后续提交(简单状态机?)。记住电子商务网站在收到东西之后有“不要再提交两次”这样的信息的日子......他们没有这种逻辑:)

+0

Sporkinventor,非常详细的答案,谢谢! – John

相关问题