語境
我有2個控制器:
根據生成的控制器代碼,在LessonsController中,ShowLessonAction渲染了ShowView。
在ShowView中,我有一個鏈接到QuizAnswersController中的動作:
<a href={CheckQuizAnswerAction (get #id answer)}>Check Answer< /a>
CheckQuizAnswerAction檢查答案是否正確,然后帶著成功資訊重定向到ShowLessonAction:
action CheckQuizAnswerAction { quizAnswerId } = do>
quizAnswer <- 獲取quizAnswerId
quiz <- fetch (get #quizId quizAnswer)
let lessonId = get #lessonId quiz
case (get #correct quizAnswer) of
True -> setSuccessMessage "正確!" >> redirectTo ShowLessonAction { lessonId }
False -> setSuccessMessage "再試試" >> redirectTo ShowLessonAction { lessonId }
問題
一切正常,但我注意到,在呼叫CheckQuizAnswerAction之后,URL是:
/CheckQuizAnswer?quizAnswerId=123...
而不是:
/ShowLesson?classicId=123...
是什么原因使這一方法在不同的URL中發揮作用?
uj5u.com熱心網友回復:
由于你的動作是做一個副作用,所以最好在這里使用一個表單:
< form method="POST"/span> action={CheckQuizAnswerAction (get #id answer) }>
< button type="submit" class="btn btn-link" > 檢查答案</按鈕>
</form>
用這個代替<a href={CheckQuizAnswerAction (get #id answer)}>Check Answer</a>可能已經解決了這個問題:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/316918.html
標籤:
上一篇:撤銷前綴和
