需要用户从列表中选择以连接YESOD中的两个用户

时间:2013-07-30 20:42:59

标签: yesod

我需要有关如何构建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">

这将满足我的需求,但我真的想让用户只需点击链接即可。这是一个糟糕的设计?或者仅仅是品味问题?

1 个答案:

答案 0 :(得分:1)

如果您使用AForm / MForm,将自动为您生成表格(使用表格或分区)。这应该简化你的事情。

如果您想手动设置样式,可以在使用表单时执行以下操作:How to make button look like a link?。大多数人最终都会为这些动作创建样式按钮(想想你的标准CRUD应用程序,包括编辑,删除按钮等)。

如果您沿着捕获链接点击的路径并执行ajax Post,如果禁用了javascript,它将不会很好地降级,因此您需要注意。

HTH