2015-05-04 44 views
0

我想做一個功能,刪除一個項目的ID和重定向到用戶的其他頁面。如何通過ID和重定向刪除項目?

deleteItemR :: ItemId -> Html deleteItemR itemid = runDB $ delete itemid redirect ItemR

我試過很多次,其他的方法,但它並沒有正常工作。

回答

0

您的代碼應該是這樣的:

deleteItemR :: ItemId -> Handler Html 
deleteItemR itemid = do 
    runDB $ get404 itemid 
    runDB $ delete itemid 
    setMessage . toHtml $ ("Item deleted" :: Text) 
    redirectUltDest ItemR 

首先,你的函數的簽名不能ItemID -> Html,它必須在Handler執行。

您還需要使用do表示法模擬Haskell中的一系列操作。

請注意,在這樣的序列中的任何操作都可以結束執行。例如,runDB $ get404 itemid將嘗試獲取由itemid引用的項目。如果它不存在,用戶將被重定向到404頁面(未找到),而不嘗試執行其他操作。

我們需要runDB $ get404 itemid操作,因爲即使項目不存在,runDB $ delete itemid操作也不會結束序列。因此它會表明一個項目被刪除,儘管沒有。