在单个ajax响应中获取父对象和子对象

时间:2013-10-06 02:45:44

标签: javascript ajax json ruby-on-rails-3

我正在使用的这个rails应用程序具有以下模型:

专辑has_many:track

追踪belongs_to:专辑

部分应用允许我通过点击链接播放整个相册。这会触发像这样的ajax请求:

  $.ajax({
    url: '/albums/' + _this.parent().data("id") + '.json',
    data: { id : _this.parent().data("id") },
    success: function(json) {
      //more code here

    }
  });

我的控制器有这个:

 def show
  @album = Album.find(params[:id])
  render json: @album
 end

这一切都有效!

我的问题是,如何在一个ajax请求中获取专辑和属于该专辑的曲目?

我试过了:

 render json: @album.tracks

这给了我所有的曲目但不是专辑。

因此,如果有办法同时获得一个请求,请指出正确的方向。

感谢。

1 个答案:

答案 0 :(得分:2)

也许你这样做:

render json: {'album' => @album, 'tracks' => @album.tracks}

然后在你的ajax代码中:

success: function(json) {
  //more code here
  json.album contains album info
  json.tracks contains tracks info

}

编辑这是一个更简洁的方法:

render json: @album.to_json(:include =>  :tracks)