Как преобразовать записи, в том числе «включить» ассоциации в JSON - PullRequest
9 голосов
/ 02 апреля 2010

Если я сделаю что-то вроде:

result =  Appointment.find( :all, :include => :staff )
logger.debug { result.inspect }

тогда распечатывается только информация о встрече, а не связанные с ней данные о персонале. Если я получу результат [0] .staff.inpsect, то, конечно, получу данные о персонале.

Проблема в том, что я хочу вернуть это в AJAX как JSON, включая строки персонала. Как заставить его включить строки с персоналом, или мне нужно пройтись по нему и создать что-то вручную?

Ответы [ 2 ]

22 голосов
/ 02 апреля 2010

:include - аргумент для to_json, а не find. То, что вам нужно сделать в вашем контроллере, это:

def return_json
  @appointment = Appointment.find(:all)
  respond_to { |format|
    format.json { render :json => @appointment.to_json(:include => :staff) }
  }
end

Вам нужно установить связь между назначением и персоналом, чтобы это работало.

1 голос
/ 02 апреля 2010

Извлечение ActiveRecord :: Сериализация и ActionController :: Base (см. Раздел: «Рендеринг JSON»)

def show
  @appointment = Appointment.find(:all, :include => :staff)
  respond_to do |format|
    format.html
    format.js { render :json => @appointment.to_json(:methods => [:staff]) }
  end
end
...