Rails:在JSON输出中包含相关对象

Cod*_*ezy 27 activerecord json ruby-on-rails ruby-on-rails-3

我有一个属于用户的笔记类(即用户可以创建许多笔记).

从笔记控制器剪辑

class NotesController < ApplicationController
  before_filter :authenticate_user!
  respond_to :html, :xml, :json

  # GET /notes
  # GET /notes.xml
  def index
    @notes = Note.includes(:user).order("created_at DESC")
    respond_with @notes
  end
Run Code Online (Sandbox Code Playgroud)

当我在json结果中请求索引例如/notes.json时,它返回注释但只返回用户对象的user_id.我希望它还包括user.username(并且好奇如何嵌入整个用户对象).

奖金问题:我找不到将列显示为author_id的方法,并将其与用户联系起来.如果这很容易做到,你怎么做?

Jim*_*dra 43

我不确定新respond_to/ respond_with样式是否足够灵活.它很可能是,但据我所知,它只是为了简化最简单的情况.

但是,您可以respond_to通过将参数传递给您来实现您尝试使用块的旧样式to_json.尝试这样的事情:

class NotesController < ApplicationController
  def index
    @notes = Note.order("created_at desc")
    respond_to do |format|
      format.json do
        render :json => @notes.to_json(:include => { :user => { :only => :username } })
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)