我有两个简单的模型:
与
:title -> string, :content -> string
has_and_belongs_to_many :tags, join_table: :tags_notes
accepts_nested_attributes_for :tags
与
:name -> string
has_and_belongs_to_many :notes, join_table: :tags_notes
两个模型都通过has_and_belongs_to_many
关系连接。
如上所述,关联表称为tags_notes
。
好吧,我在这里遇到的问题是,在我的RESTful控制器中,要记笔记,我有这个:
获取/api/notes
这只返回Note对象:
[
{
"id": 1,
"title": "12231",
"content": "121213"
},
{
"id": 2,
"title": "test",
"content": "testtest"
}
]
但是,每个音符都有tags
,我想将这些音符转储到响应中,如下所示:
[
{
"id": 1,
"title": "12231",
"content": "121213",
tags: [
{
"name": "test",
"id": 1
},
{
...
}
]
},
...
]
在我的控制器中,我试过了
Note.includes(:tags)
。
当前控制器代码:
def index
notes = Note.includes(:tags)
render json: notes, status: :ok
end
他们似乎只返回notes
,而没有tags
。 Note.eager_load(:tags)
的情况也是如此。我做错了什么?找不到足以帮助我解决此问题的文档。
如果有人可以帮助我,我将不胜感激。
非常感谢。
答案 0 :(得分:2)
在发布我的问题后不久,我自己找到了答案。 include
必须进入render.
所以控制器代码
def index
notes = Note.all
render json: notes, :include => :tags, status: :ok
end
似乎可以做到这一点!