Мое приложение имеет интерфейс Rails API и интерфейс React.
В ERD есть только три параметра: Пользователь has_many :sites
, Сайт belongs_to :user
и has_many :pages
и Страница belongs_to :site
.
Все функции CRUD работают, кроме случаев, когда япопробуйте опубликовать страницу, принадлежащую сайту, в моем бэкенде Active Records.
Если я посмотрю на консоль Rails, я смогу увидеть сайты и пользователя, которым они принадлежат:
#<Site:0x00007fbc9ad9fe28 id: 94, name: "Daffy", category: "test", user_id: 1, created_at: Tue, 15 Oct 2019 13:53:23 UTC +00:00, updated_at: Tue, 15 Oct 2019 13:53:23 UTC +00:00>]
однако, когда я пытаюсь опубликовать страницу на сайте, идентификатор сайта возвращается ноль
#<Page:0x00007fbc9b5069c8 id: 2, content: "\"\"", site_id: nil, created_at: Tue, 15 Oct 2019 10:51:42 UTC +00:00, updated_at: Tue, 15 Oct 2019 10:51:42 UTC +00:00>]
Глядя на инструменты разработчика Chrome, я получаю ошибку 422:
Failed to load resource: the server responded with a status of 422 (Unprocessable Entity)
:3000/users/1/sites/94/pages/:1
&в сети на вкладке «Предварительный просмотр» я получаю
{site: ["must exist"]}
site: ["must exist"]
Я просмотрел следующие сообщения StackOverflow, связанные с этим:
POST 422 (Unprocessable Entity) в Rails? Из-за маршрутов или контроллера?
и
Проверка не пройдена Класс должен существовать
, но в моем конкретном случае это не помогло.
SitesController.rb
class SitesController < ApplicationController
before_action :set_site, only: [:show, :update, :destroy]
before_action :authorize_request, only: [:create]
...
def create
@site = Site.new(site_params)
@current_user.sites << @site
render json: @site, status: :created
end
...
def site_params
params.require(:site).permit(:name, :category, :user_id)
end
end
Я занимаюсь этим некоторое время, я надеюсь, что кто-то, кто знает Rails намного лучше, чем я, может указать, что яотсутствует.