0

我需要有关如何构建 YESOD 应用程序的一般指导。我想在设计上尽可能保持应用程序的“RESTful”。

用户搜索所有其他用户以找到要连接的用户。我展示了使用 Hamlet 的可能联系:

  $forall (pid, person, mEmail, mPhone) <- displayPeopleRecs
    <p>
        <a href=@{CreateFundR pid}>#{personNickName person} 
           $maybe email <- mEmail
              #{emailEmail email}
           $maybe phone <- mPhone
              #{phoneNumber phone}

但是,现在当用户单击链接时,他们会以 GET 请求的形式转到 /createfund/ 页面,这不是我想要的,我想使用 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">

这将满足我的需求,但我真的很想让用户点击链接。这是糟糕的设计吗?还是只是口味问题?

4

1 回答 1

1

如果您使用 AForm / MForm,将自动为您生成表单(使用 Tables 或 Divs)。那应该为您简化事情。

如果要手动设置样式,可以在使用表单时执行以下操作:如何使按钮看起来像链接?. 无论如何,大多数人最终都会为此类操作创建样式按钮(想想您的标准 CRUD 应用程序与编辑、删除按钮等)。

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

高温高压

于 2013-07-31T04:46:39.020 回答