タグ付けされた質問 「nested-resources」

2
REST Complex / Composite / Nested Resources [終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 この質問を改善する RESTベースのAPIで概念に対処するための最良の方法に頭を抱えようとしています。他のリソースを含まないフラットリソースは問題ありません。問題が発生しているのは複雑なリソースです。 たとえば、漫画のリソースがあります。ComicBookその上のプロパティのすべての種類などを有しているauthor、issue number、date、など 漫画本にも1..nカバーのリストがあります。これらのカバーは複雑なオブジェクトです。これらには、カバーに関する多くの情報が含まれています。アーティスト、日付、さらにはBase 64でエンコードされたカバーの画像です。 以下のためGETにComicBook私は漫画を返し、そのbase64'ed画像を含むカバーのすべての可能性があります。それはおそらく単一の漫画を得るために大したことではありません。しかし、システム内のすべてのコミックを表にリストしたいクライアントアプリを作成しているとします。 テーブルにはComicBookリソースのいくつかのプロパティが含まれますが、テーブル内のすべてのカバーを表示する必要はありません。1000冊のコミックを返し、それぞれに複数のカバーがあると、回線上に途方もなく大量のデータが送られてきます。この場合、エンドユーザーには不要なデータです。 私の本能はCover、リソースを作成し、ComicBookカバーを含めることです。これCoverがURIです。GETコミック本では今では機能しますが、巨大なCoverリソースの代わりに、各カバーのURIを返信し、クライアントは必要に応じてカバーリソースを取得できます。 今、私は新しい漫画を作ることに問題があります。確かに、を作成するときに少なくとも1つのカバーを作成する必要がありますComic。実際、これはおそらくビジネスルールです。 だから私は行き詰まっています、私は最初にを送信してCoverそのカバーのURIを取得し、次にリストにそのURIを付けてを送信することによってクライアントにビジネスルールを適用するよう強制POSTするComicBookか、またはPOSTon ComicBookはそれが吐き出すのとは異なる見た目のリソースを受け取りますでる。着信リソースPOSTとはGET、発信深いコピー、あるGETsが依存リソースへの参照が含まれています。 Cover私はいくつかのケースでは、アドレスカバー方向にしたいと思いクライアントとして確信しているので、リソースがどのような場合には、おそらく必要があります。そのため、依存するリソースのサイズに関係なく、問題は一般的な形で存在します。一般に、クライアントにそれらのリソースがどのように構成されているかを「知る」ことを強制せずに、複雑なリソースをどのように処理しますか?

3
ネストされたリソースを持つform_for
form_forとネストされたリソースについて2つの部分からなる質問があります。ブログエンジンを作成していて、コメントを記事に関連付けたいとしましょう。ネストされたリソースを次のように定義しました: map.resources :articles do |articles| articles.resources :comments end コメントフォームは、記事のshow.html.erbビュー内で、たとえば次のように記事自体の下にあります。 <%= render :partial => "articles/article" %> <% form_for([ :article, @comment]) do |f| %> <%= f.text_area :text %> <%= submit_tag "Submit" %> <% end %> これにより、「nilに対して呼び出されたIDが誤って呼び出される」などのエラーが発生します。私も試しました <% form_for @article, @comment do |f| %> これは正しくレンダリングされますが、コメントではなく記事の「テキスト」フィールドにf.text_areaを関連付け、そのテキスト領域のarticle.text属性のHTMLを表示します。だから私もこれが間違っているようです。私が欲しいのは、 'submit'がCommentsControllerのcreateアクションを呼び出すフォームです。たとえば、/ articles / 1 / commentsへの投稿リクエストなど、paramsにarticle_idがあります。 私の質問の2番目の部分は、最初にコメントインスタンスを作成する最良の方法は何ですか?ArticlesControllerのshowアクションで@commentを作成しているので、コメントオブジェクトはform_forヘルパーのスコープ内にあります。次に、CommentsControllerのcreateアクションで、form_forから渡されたパラメーターを使用して新しい@commentを作成します。 ありがとう!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.