都市が含まれているアプリがあります。AJAXリクエストを介して都市レコードを検索、初期化、作成できるように、コントローラーをRESTfulに構造化する方法に関するいくつかの提案を探しています。例えば:
- 与えられたテキストフィールド
city_name
- ユーザーが「パリ、フランス」のように都市の名前を入力します
- アプリはこの場所をチェックして、データベースにそのような都市がすでに存在するかどうかを確認します
- 存在する場合は、都市オブジェクトを返します
- 存在しない場合は、「パリ」という名前と「フランス」の国で初期化された新しいレコードが返され、この都市をデータベースに追加することを確認するようにユーザーに求められます。
- ユーザーが「はい」と言うと、レコードが保存されます。そうでない場合、レコードは破棄され、フォームはクリアされます。
さて、私の最初のアプローチは、Createアクションを使用するように変更することでしたfind_or_create
。これにより、AJAX投稿cities_path
は、既存の都市を返すか、作成して返すことになります。
それは問題なく動作します...ただし、文字列入力、検索、または初期化して返すコントローラーアクションを設定し、生成されたレコードが正しいことをユーザーが確認した場合にのみ作成することをお勧めします。理想的なシナリオでは、これをすべて1つのアクションにまとめて、AJAXリクエストがそのURLに移動し、サーバーがJSONオブジェクトで応答し、javascriptがそこから処理できるようにします。すべてのユーザーインタラクションロジッククライアント側を維持し、これを実現するために必要なリクエストの数を最小限に抑えたいと思います。
これを達成するための最もクリーンで最もRESTfulな方法に関する提案はありますか?