haskell - redirectTo 有效,但不会更改 IHP 中的 URL
问题描述
语境
我有 2 个控制器:
- LessonsController(带有视图索引和显示)
- QuizAnswersController(无视图)
按照生成的控制器代码,在LessonsController
rendersShowLessonAction
中ShowView
。
在ShowView
,我有一个链接到一个动作QuizAnswersController
:
<a href={CheckQuizAnswerAction (get #id answer)}>Check Answer</a>
CheckQuizAnswerAction
检查答案是否正确,然后ShowLessonAction
使用成功消息重定向到:
action CheckQuizAnswerAction { quizAnswerId } = do
quizAnswer <- fetch quizAnswerId
quiz <- fetch (get #quizId quizAnswer)
let lessonId = get #lessonId quiz
case (get #correct quizAnswer) of
True -> setSuccessMessage "Correct!" >> redirectTo ShowLessonAction { lessonId }
False -> setSuccessMessage "Try again" >> redirectTo ShowLessonAction { lessonId }
问题
一切正常,但我注意到在CheckQuizAnswerAction
调用之后,URL 是:
/CheckQuizAnswer?quizAnswerId=123...
代替:
/ShowLesson?lessonId=123...
是怎么回事使这个工作与不同的 URL?
解决方案
由于您的操作会产生副作用,因此最好在此处使用表单:
<form method="POST" action={CheckQuizAnswerAction (get #id answer)}>
<button type="submit" class="btn btn-link">Check Answer</button>
</form>
使用它而不是<a href={CheckQuizAnswerAction (get #id answer)}>Check Answer</a>
可能已经解决了问题:)
推荐阅读
- encoding - 三态位怎么能挤在一起呢?
- powershell - Powershell通过pssession远程访问共享磁盘在Windows Server 2016上失败
- python - Django 官方教程模型 part4
- java - 无法在 Ubuntu 16.04 上的 Eclipse 中加载 Maven 项目
- batch-file - 批处理:在 Echo 禁用错误中设置 var end
- xml - 如何在 Marklogic 中为 Element 声明命名空间?
- powershell - 将不同行中的值传递给 Powershell 中的不同变量
- python - 在查询返回的索引处更新数据框
- python - Python pygments 词法分析器状态保存
- c# - 使用 JSON 对 WCF 服务进行分页