我需要有关如何构建YESOD应用程序的一般指导。我想尽可能地将应用程序设计为“RESTful”。
用户搜索所有其他用户以找到要连接的用户。我用哈姆雷特展示了可能的联系:
$forall (pid, person, mEmail, mPhone) <- displayPeopleRecs
<p>
<a href=@{CreateFundR pid}>#{personNickName person}
$maybe email <- mEmail
#{emailEmail email}
$maybe phone <- mPhone
#{phoneNumber phone}
但是,现在当用户点击链接时,他们会转到/ createfund /页面作为GET请求而不是我想要的,我想使用POST或其他东西。
任何人都可以解释一下这里有正确的解决方案吗?我是否为每个人制作了一个搜索产生的表格,并为每个可能的人提供了一个提交按钮?这看起来很傻。是否更好地使用Julius并更改链接的onclick处理程序以提交POST而不是GET到/ createfund?
以下是我的配置/路线中的相关行:
/createfund/#PersonId CreateFundR POST
顺便说一下,我可以看一下如何通过使用表单和提交按钮来完成这项工作:
$forall (pid, person, mEmail, mPhone) <- displayPeopleRecs
<p>
<form method="post" action="@{CreateFundR pid}">
<table>
<tr>
<td>
#{personNickName person}
$maybe email <- mEmail
<br>
#{emailEmail email}
$maybe phone <- mPhone
<br>
#{phoneNumber phone}
<td>
<input type="submit" value="Create Fund">
这将满足我的需求,但我真的想让用户只需点击链接即可。这是一个糟糕的设计?或者仅仅是品味问题?
答案 0 :(得分:1)
如果您使用AForm / MForm,将自动为您生成表格(使用表格或分区)。这应该简化你的事情。
如果您想手动设置样式,可以在使用表单时执行以下操作:How to make button look like a link?。大多数人最终都会为这些动作创建样式按钮(想想你的标准CRUD应用程序,包括编辑,删除按钮等)。
如果您沿着捕获链接点击的路径并执行ajax Post,如果禁用了javascript,它将不会很好地降级,因此您需要注意。
HTH