【问题标题】:Ruby on Rails - Join two tables add results to JSONRuby on Rails - 连接两个表将结果添加到 JSON
【发布时间】:2013-12-06 21:02:59
【问题描述】:

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}

非常感谢这里的任何帮助!

【问题讨论】:

  • 这与 Angular 有什么关系?
  • @stewie 我在前端使用 Angular,希望有熟悉 ROR + Angular 的人帮助我。
  • 不过,您的问题本身与 Angular 无关,而与 Rails 和 DB 有关。因此,它绝对不值得angularjs 标签。

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


【解决方案1】:

你的节目应该是:

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

【讨论】:

  • 谢谢!完美运行!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多