Ruby on Rails - 加入两个表将结果添加到JSON

时间:2013-12-06 21:03:00

标签: ruby-on-rails ruby json ruby-on-rails-4

Ruby on Rails 4.0的新手,我在使用JSON添加连接表中的数据时遇到了一些麻烦。我在前端使用AngularJS,我似乎无法在这里找到一个很好的例子来帮助我。

简而言之,我有一个带有用户ID的邀请。我有一个用户ID的用户。知道邀请ID后,我想获得与该邀请对应的用户名。

Invite 1: UserID: 10
Invite 2: UserID: 11
Invite 3: UserID: 12

UserID: 10 Name: Owen
UserID: 11 Name Greg

控制器 - 邀请

# GET /invites/1
# GET /invites/1.json
def show
   @invite = Invite.includes(:user).find(params[:id]).to_json(include: :user)
end

模型 - 邀请

class Invite < ActiveRecord::Base
belongs_to :user
has_one :meal
has_one :event
has_one :registry
end

模特 - 用户

class User < ActiveRecord::Base
    has_one :invite
end

但是每当我检查/ invites / 1时,我都会得到这个。

{"id":1,"created_at":"2013-12-06T20:14:39.001Z","updated_at":"2013-12-06T20:58:15.597Z","event_id":7,"meal_id":8,"registry_id":0,"rsvp":false,"user_id":9}

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:5)

你的节目应该是:

def show
    @invite = Invite.includes(:user).find(params[:id])
    respond_to do |format|
        format.json { render :json => @invite.to_json(include: :user) }
    end
end

答案 1 :(得分:1)

我建议你使用JBuilder http://rubygems.org/gems/jbuilder。您可以使用@ invite.to_json,但JBuilder可以让您更好地控制输出。