2

我想在同一个处理程序中呈现 2 个不同的表单,但我不确定是否可能。

表格是:

questionForm ::  ExamId -> AForm Handler Question 
questionForm  eid =  Question 
            <$> areq textField (bfs (MsgQuestion)) Nothing 
            <*> pure eid 

answerQuestionForm :: QuestionId -> AForm Handler UserAnswer
answerQuestionForm  qid  = UserAnswer 
            <$> areq textField (bfs (MsgAnswer)) Nothing
            <*> pure Nothing 
            <*> pure qid

我打算使用这个 GET 方法

 getAnswerQuestionR :: ExamId -> Handler Html
 getAnswerQuestionR eid = do
                mid <- maybeAuthId
                questions <- runDB $ selectList [] [Desc     QuestionQuestionText]
                (articleWidget, enctype) <- generateFormPost $ renderBootstrap3 BootstrapBasicForm $ questionForm eid 
                defaultLayout $ do       
                 $(widgetFile "TakeExam/answerQuestion")


 getAnswerQuestionPR :: QuestionId -> Handler Html
 getAnswerQuestionPR qid = do 
           uid <- requireAuthId
           (widget, encoding) <- generateFormPost $ renderBootstrap3 BootstrapBasicForm $ answerQuestionForm qid
           defaultLayout $ do  
                let  actionR = ExamR                        
                $(widgetFile "TakeExam/answerQuestion")

但这个选项不起作用

4

1 回答 1

1

错误消息指的是哪一行代码?

Handler/TakeExam.hs:32:23: 
Not in scope: ‘questions’ In the splice: $(widgetFile "TakeExam/answerQuestion") 

我猜这是第二个处理程序(getAnswerQuestionPR)中的拼接。事实上,在文件被拼接的地方,没有任何带有名称的标识符questions是可见的。

于 2015-04-07T10:46:17.737 回答