3

Rails アプリに 2 つのモデルPostとがあるとしCommentます。投稿has_manyコメントとコメントbelongs_to投稿。アクションの関数をオーバーライドして、プロパティとオブジェクトの配列の両方を含む JSON 応答を取得するに
はどうすればよいですか?respond_toshowPostComment

現在、バニラ Rails のデフォルトです:

# posts_controller.rb
def show
  @post = current_user.posts.find(params[:id])

  respond_to do |format|
    format.html # show.html.erb
    format.json { render json: @post }
  end
 end
4

4 に答える 4

4

これは、Active Record シリアライゼーション メソッドを使用して行うことができます。

to_json

以下のコードは動作するはずです。

 format.json { render json: @post.to_json(:include => :comments) }
于 2012-04-17T05:45:12.133 に答える
2

json シリアライゼーションにactive_model_serializersを使用してみてください。関連するオブジェクトを含めるのは簡単で、シリアライゼーション用に別のファイルを用意することで物事を分離することもできます。

例:

class PostSerializer < ApplicationSerializer
    attributes :id, :title, :body
    has_many :comments
end
于 2012-04-17T04:28:24.760 に答える
2

to_jsonモデルでオーバーライドするか、 Jbuilderまたはrablを使用できます。

于 2012-04-17T04:31:01.927 に答える
1

Rails は、対応するための最良の方法を提供しています。

controller の上部にRespond_toを定義します。お気に入り :

class YourController < ApplicationController
  respond_to :xml, :json

  def show
    @post = current_user.posts.find(params[:id])
    respond_with (@post)
  end
end

詳細については、http: //davidwparker.com/2010/03/09/api-in-rails-respond-to-and-respond-with/をご覧ください。

于 2012-04-17T06:05:47.693 に答える