2014-12-01 2 views
0

У меня возникли проблемы с веб-сервером Скотти прямо сейчас - rescue не работает для ненайденных параметров - я все еще получаю 404 со следующим кодом:Скотти и POST PARAMS

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

I что когда я просто использую 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_' неплохой идеей ... –

+0

Я только что узнал что-то, что действительно засасывает со Скотти - если вы избавитесь от параметра, вы фактически не можете использовать параметр: 'rescue :: ActionM a -> (Текст -> ActionM a) -> ActionM a' Если ваши обработчики являются« ActionM() », вы не можете вытащить этот параметр, потому что его тип будет'() ', а не' Text' :( –

+0

'get' сам заставляет тип единицы измерения: / –

 Смежные вопросы

  • Нет связанных вопросов^_^