2

非常に単純な CRUD アプリを作成しようとしていますが、レコードを更新および削除する最善の方法がわかりません。すべてのレコードを正常に一覧表示し、新しいレコードを作成できます。今、アプリからこれらの記録を削除したいと思っていますが、どのようにすればよいかすぐにはわかりません。

次のように、フィールド Name が 1 つだけの Person テーブルがあるとします。

Person 
   name Text

テーブル内のすべての人物をリストする PersonR というハンドラーと、新しい人物を入力するためのフォームがあります。削除と更新を処理するために、という隠しフィールドを作成し personId 、InputForm を介してフォームを処理できると考えましたが、ID を簡単に取得できませんでした。試してみ unKey personId ましたが、まだ PersistInt64 1あるので、そこからIDを釣り上げたとしても、これは正しい方法ではないと推測しています。

私が取ることができる別のアプローチは、すべての人をリストするためだけに新しいハンドラー (ListPersons など) を作成し、 Personハンドラーを次のように変更 Person/#personId.することです。

この権利について考えていることと、基本的な CRUD アプリ機能を実装するための提案があれば教えてください。

更新: PersonPanelGET と POST を処理する を作成しました。PersonHandler が DELETE と PUT を処理しました。散らばらないように、4 つのハンドラーを同じ Person ハンドラー ファイルに配置することになりました。これが他の人に役立つことを願っています。

ありがとう!

4

1 に答える 1

1

toPathPiecein class を使用Web.PathPieces.PathPieceしてキーを に変換Textし、隠しフィールドに入れてみませんか?

yesod はこのクラスを使用して、Textキーを型安全な URL にエンコードするときにキーを変換し、その逆も同様だと思います。

この方法でキーを に変換することもできますがText、望ましい方法は に DELETE リクエストを送信することPerson/#personIdです。@{...}hamlet テンプレートで使用して、この URL を生成できます。

于 2013-07-16T09:02:31.237 に答える