Ruby on rails 由于无法获得作者的书籍,ruby有许多
我对ruby是新手。我有两种型号的Ruby on rails 由于无法获得作者的书籍,ruby有许多,ruby-on-rails,ruby,migration,Ruby On Rails,Ruby,Migration,我对ruby是新手。我有两种型号的书和作者。我想应用两个模型之间的关联。书籍属于一位作者,一位作者可以拥有多本书。这是我的模型 class Book < ApplicationRecord belongs_to :author validates :name, presence: true validates :body, presence: true validates :author_id, presence: true end 但是当我击球的时候,我会得到这样的回答
书
和作者
。我想应用两个模型之间的关联。书籍属于一位作者,一位作者可以拥有多本书。这是我的模型
class Book < ApplicationRecord
belongs_to :author
validates :name, presence: true
validates :body, presence: true
validates :author_id, presence: true
end
但是当我击球的时候,我会得到这样的回答。这里我看不到图书信息。我需要添加任何特定代码吗?或者说交往是不够的
[
{
"id": 1,
"name": "Miss Mora Bogan",
"age": "20",
"created_at": "2019-12-07T06:22:27.251Z",
"updated_at": "2019-12-07T06:22:27.251Z"
},
]
json中得到的只是db中表字段的值。books和authors之间关系的author外键存储在books表中,而不是同时存储在books表中,因此要获取有关books的信息,您需要在controller方法中告诉从books表中加入哪些内容。如果要控制json响应的外观,有许多选项。已经在rails中使用,您可以执行以下操作
#app/views/books/index.json.jbuilder
json.array@书做书|
json.name book.name
json.body book.body
json.author.do
json.name book.author.name
json.age book.author.age
结束
结束
使用jbuilder可以用更短的方法实现同样的目标。结帐
您仍然需要在控制器中正确执行响应和格式化。假设您希望以
json
格式调用index
操作。(http://localhost:3000/authors.json
)
在呈现JSON时,您需要包含关联的模型,因此,对于该控制器,控制器应如下所示:
# authors_controller.rb
class AuthorsController < ApplicationController
def index
@authors = Author.all
respond_to do |format|
format.json { render json: @authors, include: [:books] }
end
end
end
#authors_controller.rb
类AuthorsController
参考:发布你的
索引
作者的行动代码和索引
书籍的行动代码控制器.rb你的问题是什么?如何让/authors
也返回作者的书籍?或者如何使用/authors
中的信息从/books
加载相应的书籍?顺便问一下,你的控制器看起来怎么样?
[
{
"id": 1,
"name": "Miss Mora Bogan",
"age": "20",
"created_at": "2019-12-07T06:22:27.251Z",
"updated_at": "2019-12-07T06:22:27.251Z"
},
]
# app/views/authors/index.json.jbuilder
json.array! @authors do |author|
json.name author.name
json.age author.age
json.books author.books do |book|
json.name book.name
json.body book.body
end
end
# authors_controller.rb
class AuthorsController < ApplicationController
def index
@authors = Author.all
respond_to do |format|
format.json { render json: @authors, include: [:books] }
end
end
end