为什么当我显示@portfolio_items的jason时,我仅获得Portfolio的数据,而不是技术的数据,但是当我执行@ portfolio_items.technologies时,我仅获得技术的记录 我想要一个包含两者的杰森对象
@portfolio_items = Portfolio.includes(:technologies).find(27)
puts json: @portfolio_items
返回
Portfolio id: 27,
title: "Portfolio title: 0",
subtitle: "Angular",
body: "Lorem ipsum dolor sit amet, consectetur adipiscing...",
main_image: "https://via.placeholder.com/600x400",
thumb_image: "https://via.placeholder.com/350x200",
created_at:"2018-12-28 23:18:35",
updated_at: "2018-12-28 23:18:35"
和
puts json: @portfolio_items.technologies
返回
[#<Technology id: 7, name: "Technology 0", portfolio_id: 27, created_at:
"2018-12-28 23:18:35", updated_at: "2018-12-28 23:18:35">,
<Technology id: 8, name: "Technology 1", portfolio_id: 27, created_at
:"2018-12-28 23:18:35", updated_at: "2018-12-28 23:18:35">,
<Technology id: 9, name: "Technology 2", portfolio_id: 27, created_at:
"2018-
12-28 23:18:35", updated_at: "2018-12-28 23:18:35">]
所以基本上,为什么@portfolio_items在Portfolio_items.technologies中没有值
答案 0 :(得分:1)
这是因为.technologies
是在@portfolio_items
对象上调用的一种方法,该方法将返回与之相关的技术,但是它不会将它们混合在一起,我认为这正是您所要的。要将其显示为嵌套的JSON对象,您需要这样的内容。
puts @portfolio_items.as_json(include:{technologies:{}})
如果您对此感到好奇,这可能会有所帮助:https://apidock.com/rails/ActiveModel/Serializers/JSON/as_json