CRUD应用程序:获取ID以删除和更新记录

时间:2013-07-16 04:31:43

标签: haskell yesod

我正在尝试创建一个非常简单的CRUD应用程序,我不确定更新和删除记录的最佳方法是什么。我能够成功列出所有记录并创建新记录。现在我想通过应用程序删除这些记录,但我不知道应该如何做到这一点。

假设我有一个只有一个字段名称的Person表,如下所示:

Person 
   name Text

我有一个名为PersonR的处理程序,它列出了表中的所有人和一个输入新表单的表单。为了处理删除和更新,我想我可以创建一个名为 personId 的隐藏字段,然后通过InputForm处理表单,但我无法轻松获取ID。我尝试了 unKey personId ,但它仍然有 PersistInt64 1所以我认为即使我设法将ID从那里捕获,这也不是正确的方法。

我可以采取的另一种方法是创建一个新的处理程序(比如ListPersons),只是为了列出所有人,然后将 Person处理程序更改为 Person/#personId.我希望尽可能避免这种情况并保持所有操作相关尽可能在一个地方的人。

如果我正在考虑这个权利以及实施基本CRUD App功能的任何建议,请告诉我们。

更新:我最终创建了一个 PersonPanel来处理GET和POST。 Person处理程序负责DELETE和PUT。我最终将4个处理程序放在同一个Person处理程序文件中,因此它不会分散。希望这有助于其他人。

谢谢!

1 个答案:

答案 0 :(得分:1)

如何在toPathPiece类中使用Web.PathPieces.PathPiece将密钥转换为Text,并将其放入隐藏字段?

我猜yesod使用此类将密钥转换为Text,当密钥将密钥编码为类型安全的URL时,反之亦然。

即使您可以通过这种方式将密钥转换为Text,但首选方法是向Person/#personId发送DELETE请求。您可以在小册子模板中使用@{...}生成此URL。