Создать действие в контроллере, чтобы назначить встречу между пользователями и врачами - 204 НЕТ ОТВЕТА - PullRequest
0 голосов
/ 29 января 2020

Я создаю API для приложения, в котором пользователь может назначать встречи с врачом.

Все работает просто отлично, но возвращается 204 - Нет содержимого когда я пытаюсь опубликовать новую встречу в Почтальоне.

Моя схема:

create_table "appointments", force: :cascade do |t|
    t.date "date"
    t.time "time"
    t.bigint "user_id"
    t.bigint "doctor_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["doctor_id"], name: "index_appointments_on_doctor_id"
    t.index ["user_id"], name: "index_appointments_on_user_id"
  end

  create_table "doctors", force: :cascade do |t|
    t.string "name"
    t.string "speciality"
    t.integer "years_of_experience"
    t.integer "likes"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "users", force: :cascade do |t|
    t.string "email"
    t.string "password_digest"
    t.string "name"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  add_foreign_key "appointments", "doctors"
  add_foreign_key "appointments", "users"
end

Контролер моих встреч:

class Api::V1::AppointmentsController < ApplicationController
  include CurrentUserConcern

  def index
    @appointments = Appointment.all
    render json: @appointments
  end

  def create
    if @current_user
      @appointment = @current_user.appointments.build(appointment_params)
      if @appointment.save
        render json: @appointment 
      else
        render json: { status: 401 }
      end
    end
  end

  private

    def appointment_params
      params.require(:appointment).permit(:time, :date, @current_user.id, :doctor_id)
    end
end

1 Ответ

0 голосов
/ 29 января 2020

Прежде всего, нет необходимости отправлять @current_user.id в destination_params, так как user_id будет назначен автоматически при выполнении этой строки @appointment = @current_user.appointments.build(appointment_params). Что касается вашей проблемы, убедитесь, что вы отправляете POST-запрос и данные "body" в правильном формате JSON из PostMan. Согласно вашему методу appointment_params тело запроса должно выглядеть следующим образом

{
   appointment: {
      time: "",
      date: "",
      doctor_id: 
   }
}
...