如何禁止頁面緩存我是設計一個購物車,有兩個網頁,在軌道上
首先是結賬網頁,如果用戶使用返回按鈕,第二個是order_success頁
在webbrowser上,用戶進入order_success頁面後,它將返回到結賬頁面。
,所以我想找到一些方法來禁止讓使用者回去,
有沒有在軌道上一些方法來archieve呢?
如何禁止頁面緩存我是設計一個購物車,有兩個網頁,在軌道上
首先是結賬網頁,如果用戶使用返回按鈕,第二個是order_success頁
在webbrowser上,用戶進入order_success頁面後,它將返回到結賬頁面。
,所以我想找到一些方法來禁止讓使用者回去,
有沒有在軌道上一些方法來archieve呢?
「我知道這一點,但用戶將使用Go Back按鈕,如果在客戶端緩存一些, 用戶仍然可以看到一些&補辦,這是不是我所期望」 [是什麼意思?]
如果要防止用戶重新提交同樣的請求,您可以添加一個隱藏字段(只是一些隨機的),並將其存儲在後一個會話請求已被公關ocessed:
if params[:token] == session[:used_token]
render_already_processed_notice
return
end
if @cart.save
session[:used_token] = params[:token]
....
如果您在請求中使用購物車的ID,那麼你只可以使用車模型的狀態:
@cart = Cart.find(params[:id])
render_some_notice and return if @cart.done?
....
@cart.done = true
@cart.save
個人而言,我不會創建一個結賬和order_success頁面。我只會創建一個頁面 - 購物車狀態,根據模型狀態,我只會顯示不同的內容。
如果一些動作可能只需要執行一次(如關閉購物車或敲定交易)是沒有問題的:render_something and return if @cart.already_closed?
頁上,在那裏多次提交是可能的,但並不總是受歡迎(如添加產品到用戶可以添加兩個相同的產品),你可以做兩件事:
1)使用提到的標記,它會檢測用戶剛剛按下F5,並問他是否真的應該做兩次行動,或
2)只接受請求,但始終提供您使用「回滾」操作的方法(允許他從購物車中刪除產品),並確保在最終驗收前驗證購物車內容。
購買成功後,你應該明確的購物車,然後將用戶重定向到一個新的動作。
在你order_controller.rb
def create
@shopping_cart = nil
redirect_to some_path
end
我知道這一點,但用戶將使用返回按鈕,如果客戶端中有一些緩存,用戶仍然可以看到某些東西並重新提交,這不是我除了 – mlzboy 2010-11-16 07:22:24