Первый вопрос о переполнении стека, поэтому я заранее извиняюсь за то, что забыл вещи.
Проект:
- Функция объявления, которая позволяет администраторам / модераторам публиковать объявления на сайте.
Используемые инструменты / языки:
- Реакция / Ruby on Rails, Разработка (для входа в систему)
История:
- Функция объявления была UP и RUNNING;пока я не добавил поле «Имя пользователя» в свою таблицу объявлений.Я правильно обновил миграцию / схему и внес изменения в контроллер, чтобы новое поле, а также форма React могли передать новое поле в объект объявлений.
Ошибка:
- После обновления файлов миграции / схемы новыми полями, обновления анонса_контроллера для разрешения нового поля и обновления формы React для захвата и POST нового объекта «Объявление» через запрос POST AXIOS, я получаюследующая ошибка: «Цепь фильтра остановлена как: authenticate_user! предоставлено или перенаправлено» 401 не авторизован и т. д.
Вещи, которые я уже пробовал:
Iпроверил все данные, которые ДОЛЖНЫ быть в объекте объявления, непосредственно перед тем, как их протолкнуть через запрос POST, именно там, где и должно быть.(См. Изображения ниже)
Я попытался использовать Binding.Pry, который работает как «Отладчик» Javascript, за исключением Ruby, но мой binding.pry НЕ ОСТАНАВЛИВАЛСЯ В ЛЮБОМ МЕСТЕ в контроллере объявлений, и это заставляет меня поверить, что POST-запрос даже не передается на announcements_controller до появления ошибки, описанной ниже.
Я убедился, что таблица Announcements является такой, какой она должна быть.
Я установил новое поле, чтобы оно было разрешено в объявлении_контроллера
Примеры кода / изображения:
handleSubmit POST-запрос
handleSubmit = (announcement) => { axios.post(`/api/announcements`, announcement)}
Содержимое "объявления" ПРОСТО перед передачей в handleSubmit ()
Цепочка фильтра Остановлена как: authenticate_user!обработано или перенаправлено: сообщение об ошибке ПОСЛЕ запроса POST
Схема объявлений / база данных / таблица
ActiveRecord :: Schema.define (версия: 2018_12_19_224825) do
# These are extensions that must be enabled in order to support this
database
enable_extension "plpgsql"
create_table "accounts", force: :cascade do |t|
t.string "account_name"
t.bigint "users_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["users_id"], name: "index_accounts_on_users_id"
end
create_table "announcements", force: :cascade do |t|
t.string "body"
t.bigint "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_id"], name: "index_announcements_on_user_id"
end
create_table "games", force: :cascade do |t|
t.string "game_name"
t.bigint "accounts_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["accounts_id"], name: "index_games_on_accounts_id"
end
create_table "team_has_tournaments", force: :cascade do |t|
t.bigint "tournament_id"
t.bigint "team_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["team_id"], name: "index_team_has_tournaments_on_team_id"
t.index ["tournament_id"], name: "index_team_has_tournaments_on_tournament_id"
end
create_table "teams", force: :cascade do |t|
t.string "team_name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "tournaments", force: :cascade do |t|
t.text "tournament_description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "tournament_name"
end
create_table "user_has_teams", force: :cascade do |t|
t.bigint "user_id"
t.bigint "team_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["team_id"], name: "index_user_has_teams_on_team_id"
t.index ["user_id"], name: "index_user_has_teams_on_user_id"
end
create_table "users", force: :cascade do |t|
t.string "provider", default: "email", null: false
t.string "uid", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.boolean "allow_password_change", default: false
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string "unconfirmed_email"
t.string "firstName"
t.string "lastName"
t.string "username"
t.string "image"
t.string "email"
t.json "tokens"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "level", default: 1
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
t.index ["uid", "provider"], name: "index_users_on_uid_and_provider", unique: true
end
add_foreign_key "accounts", "users", column: "users_id"
add_foreign_key "announcements", "users"
add_foreign_key "games", "accounts", column: "accounts_id"
add_foreign_key "team_has_tournaments", "teams"
add_foreign_key "team_has_tournaments", "tournaments"
add_foreign_key "user_has_teams", "teams"
add_foreign_key "user_has_teams", "users"
end
Контроллер объявлений, который должен обрабатывать POST-запрос (1)
Контроллер объявлений, который должен обрабатывать POST-запрос (2)
class Api::AnnouncementsController < ApplicationController
before_action :set_announcement, only: [:show, :update, :destroy]
def index
render json: Announcement.all.order("created_at DESC")
end
def show
render json: @announcement
end
def new
@announcement = Announcement.new
end
def edit
end
def create
announcement = Announcement.new(announcement_params)
if announcement.save
render json: build_announcement(announcement)
else
render json: announcement.errors, status: 422
end
end
def update
if @announcement.update(announcement_params)
render json: @announcement
else
render json: @announcement.errors, status: 422
end
end
def destroy
@announcement.destroy
end
private
def build_announcement(announcement)
{
id: announcement.id,
body: announcement.body,
username: announcement.username,
user_id: announcement.user_id,
created_at: announcement.created_at,
updated_at: announcement.updated_at,
}
end
def set_announcement
@announcement = Announcement.find(params[:id])
end
def announcement_params
params.require(:announcement).permit(:body, :username, :user_id)
end
end