Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails控制器方法执行_Ruby On Rails_Ruby On Rails 3_Controller_Refresh - Fatal编程技术网

Ruby on rails Rails控制器方法执行

Ruby on rails Rails控制器方法执行,ruby-on-rails,ruby-on-rails-3,controller,refresh,Ruby On Rails,Ruby On Rails 3,Controller,Refresh,假设我有一个Rails控制器方法,该方法在用户提交表单时执行。现在,用户提交表单,当方法运行时(并且没有向用户呈现下一页),用户点击“刷新”。会发生什么?该方法会停止运行并重新启动,还是会有另一个线程再次运行该方法?我必须自己找到答案,以下是我的发现(使用chrome inspector上的网络选项卡) 浏览器发送以下请求: GET/profile/123/edit(用户打开编辑表单) PUT/profile/123(用户提交表单) 用户点击刷新,这会导致: 获取/profile/123/

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

我必须自己找到答案,以下是我的发现(使用chrome inspector上的网络选项卡)

浏览器发送以下请求:

  • GET/profile/123/edit(用户打开编辑表单)
  • PUT/profile/123(用户提交表单)
用户点击刷新,这会导致:

  • 获取/profile/123/edit
换句话说,它不会重新提交表单,而是重新显示编辑表单

现在。。。如果第二次单击“提交”而不是单击“刷新”,则会发送第二次

  • PUT/profile/123
这将再次调用控制器方法

如果这是一个问题,您可能需要添加一些逻辑来忽略或以其他方式处理后续提交(简单状态机?)。还记得电子商务网站在你买了东西后会发出“不要点击提交两次”这样的信息的那些日子吗。。。他们没有这样的逻辑:)