2
假設我有一個Rails控制器方法,它在用戶提交表單時執行。現在,用戶提交表單,並且在方法正在運行(並且未向用戶呈現下一頁)時,用戶點擊「刷新」。會發生什麼?該方法是否會停止運行並重新啓動,或者是否會有另一個線程再次運行該方法?Rails控制器方法執行
假設我有一個Rails控制器方法,它在用戶提交表單時執行。現在,用戶提交表單,並且在方法正在運行(並且未向用戶呈現下一頁)時,用戶點擊「刷新」。會發生什麼?該方法是否會停止運行並重新啓動,或者是否會有另一個線程再次運行該方法?Rails控制器方法執行
我必須找到答案了這個自己,這裏是我發現了什麼(使用Chrome檢查網絡選項卡)
瀏覽器發送以下請求:
在使用者命中刷新,這將導致:
換句話說,它不會重新提交表單,它重新帶來了編輯表單。現在
...如果不是擊中刷新他們打提交第二次,將發出第二
這將調用您的控制器方法的第二時間。
如果這是一個問題,您可能需要添加一些邏輯來忽略或以其他方式處理後續提交(簡單狀態機?)。記住電子商務網站在收到東西之後有「不要再提交兩次」這樣的信息的日子......他們沒有這種邏輯:)
Sporkinventor,非常詳細的答案,謝謝! – John