2014-12-01 57 views
0

我有一個問題與斯科蒂Web服務器現在 - rescue不工作unfound參數 - 我仍然得到一個404用下面的代碼:斯科蒂和post數據

post "/newsletter/create" (do 
    (param "subscriber[email]") `rescue` (\msg -> text msg) 
    formContent <- param "subscriber[email]" 
    text $ "found! " ++ show formContent) 

我可以看到,當我僅使用params代替時,我的數據就在那裏,並用「subscriber[email]」索引。 [逃跑有什麼事嗎?任何幫助將是巨大的。

回答

2

有了一些清理我得到它的工作:

{-# LANGUAGE OverloadedStrings #-} 

import Web.Scotty 
import qualified Data.Text.Lazy as TL 

main = scotty 3000 $ do 
    post "/newsletter/create" $ do 
    formContent <- (param "subscriber[email]") `rescue` (\msg -> return msg) 
    text $ "found! " `TL.append` formContent 

我做了一堆修改的,但關鍵的一點是,rescue用作圍繞param的包裝,不改變任何內部狀態,因此,你不應該叫它兩次。方括號並沒有帶來任何麻煩。

+0

這很有道理! DERP。謝謝。我想知道是不是'param_'或'params_'非破壞性函數是一個好主意...... – 2014-12-01 21:16:12

+0

我剛剛發現了一些真正吸引Scotty的東西 - 如果您從參數中拯救,您實際上不能使用參數: 'rescue:ActionM a - >(Text - > ActionM a) - > ActionM a' 如果你的處理程序是'ActionM()',那麼你不能拉參數,因爲它的類型是' ()',而不是'文本':( – 2014-12-04 20:35:40

+0

'get'本身強制單元類型:/ – 2014-12-04 20:36:41