Anpassen der to_json-Antwort in Rails 3

Ich benutzerespond_with und alles ist richtig angeschlossen, um Daten korrekt zu erhalten. Ich möchte das zurückgegebene @ anpassjson, xml undfoobar -formate auf eine TROCKENE Weise, aber ich kann nicht herausfinden, wie dies mit dem eingeschränkten:only und:include. Diese sind großartig, wenn die Daten einfach sind, aber bei komplexen Funden nicht den gewünschten Wert haben.

Sagen wir, ich habe einen Beitrag, derhas_many images

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

Ich möchte die Bilder in die Antwort einschließen, damit ich dies tun kann:

def show
  @post = Post.find params[:id]
  respond_with(@post, :include => :images)
end

aber ich möchte nicht wirklich das gesamte Bildobjekt mitsenden, nur die URL. Darüber hinaus möchte ich wirklich in der Lage sein, auch so etwas zu tun (Pseudocode):

def show
  @post = Post.find params[:id]
  respond_with(@post, :include => { :foo => @posts.each.really_cool_method } )
end

def index
  @post = Post.find params[:id]
  respond_with(@post, :include => { :foo => @post.really_cool_method } )
end

… Aber alles auf eine TROCKENE Art. In älteren Rails-Projekten habe ich XML-Builder verwendet, um die Ausgabe anzupassen, aber die Replikation über json, xml, html, was auch immer nicht richtig erscheint. Ich muss mir vorstellen, dass die Rails-Gurus etwas in Rails 3 eingefügt haben, das ich für diese Art von Verhalten nicht realisiere. Ideen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage