2012-11-02 82 views
2

假設我有一個Rails控制器方法,它在用戶提交表單時執行。現在,用戶提交表單,並且在方法正在運行(並且未向用戶呈現下一頁)時,用戶點擊「刷新」。會發生什麼?該方法是否會停止運行並重新啓動,或者是否會有另一個線程再次運行該方法?Rails控制器方法執行

回答

1

我必須找到答案了這個自己,這裏是我發現了什麼(使用Chrome檢查網絡選項卡)

瀏覽器發送以下請求:

  • GET /型材/ 123 /編輯(用戶帶來了編輯表格)
  • PUT /簡檔/ 123(用戶提交表格)

在使用者命中刷新,這將導致:

  • GET /型材/ 123 /編輯

換句話說,它不會重新提交表單,它重新帶來了編輯表單。現在

...如果不是擊中刷新他們打提交第二次,將發出第二

  • PUT /型材/ 123

這將調用您的控制器方法的第二時間。

如果這是一個問題,您可能需要添加一些邏輯來忽略或以其他方式處理後續提交(簡單狀態機?)。記住電子商務網站在收到東西之後有「不要再提交兩次」這樣的信息的日子......他們沒有這種邏輯:)

+0

Sporkinventor,非常詳細的答案,謝謝! – John

相關問題