Ошибка недопустимого параметра в Ruby on Rails - PullRequest
0 голосов
/ 27 июня 2018

При создании записи в Rails Controller возникает следующая ошибка:

Запущен POST "/ spr_type_courses" для 127.0.0.1 в 2018-06-27 08: 11: 01

+ 0500 Обработка SprTypeCoursesController # create как HTML Параметры: {"spr_type_course" => {}} Недопустимый параметр:

: последовательность spr_type_course (3,0 мс) выбирает имя us.sequence_ * из

all_sequence us, где us.sequence_owner = 'PROJECT' и

us.sequence_name = upper ('SPR_TYPECOURSES_seq') Первичный ключ (10,0 мс)

SELECT cc.column_name FROM all_constraints c, all_cons_columns cc

ГДЕ c.owner = 'PROJECT' AND c.table_name = 'SPR_TYPECOURSES' AND

c.constraint_type = 'P' AND cc.owner = c.owner AND cc.constraint_name

= c.constraint_name Триггер первичного ключа (3,8 мс) SELECT имя_сигнала ОТ всех_триггеров ГДЕ владелец = 'ПРОЕКТ' И имя-триггера = q '[PROJECT.SPR_TYPECOURSES_PKT]' AND table_owner = 'PROJECT' И имя_таблицы = q '[SPR_TYPECOURSES]' И статус = «ВКЛЮЧЕНО»

SQL (5.3ms) ВСТАВИТЬ В «ПРОЕКТ». «SPR_TYPECOURSES»

("TYPECOURSE_ID") ЗНАЧЕНИЯ (: a1) [["typecourse_id", 3623]] Завершено 500 Внутренняя ошибка сервера в 61мс

ActiveRecord :: NotNullViolation (OCIError: ORA-01400: невозможно вставить

NULL в ("ПРОЕКТ". "SPR_TYPECOURSES". "DATE_BEGIN"): INSERT INTO

«ПРОЕКТ». «SPR_TYPECOURSES» («TYPECOURSE_ID») ЗНАЧЕНИЯ (: a1)):

app / controllers / spr_type_courses_controller.rb: 17: in `create '

Что это может значить и что нужно сделать, чтобы исправить это?

class SprTypeCoursesController < ApplicationController
  before_action :set_spr_type_course, only: [:show, :update, :destroy]

  def index
    @spr_type_courses = SprTypeCourse.all

    render json: @spr_type_courses
  end

def show
  render json: @spr_type_course
end

def create
  @spr_type_course = SprTypeCourse.new(spr_type_course_params)

  if @spr_type_course.save
    render json: @spr_type_course, status: :created, location: @spr_type_course
  else
    render json: @spr_type_course.erros, status: :unprocessable_entity
  end
end

def update
  if @spr_type_course.update(spr_type_course_params)
    render json: @spr_type_course
  else
    render json: @spr_type_course.errors, status: :unprocessable_entity
  end
end

def destroy
  @spr_type_course.destroy
end

private
  def set_spr_type_course
    @spr_type_course = SprTypeCourse.find(params[:id])
  end

# Only allow a trusted parameter "white list" through.
def spr_type_course_params

  params.permit(
      :typecourse_id,
      :date_begin,
      :date_end,
      :name,
      :comments,
      :active_id
  )
end
end

1 Ответ

0 голосов
/ 27 июня 2018

Ваша spr_type_course_params проблема. Как вы видите в журнале ошибок, параметр spr_type_course не разрешен в сильных параметрах. Также параметр spr_type_course пуст. Пожалуйста, просмотрите отправленную форму тоже.

{"spr_type_course" => {}} Недопустимый параметр:

Измените его следующим образом:

def spr_type_course_params
  # here I assume the typecourse_id, date_begin etc params are all 
  # included in spr_type_course schema
  params.require(:spr_type_course).permit(
      :typecourse_id,
      :date_begin,
      :date_end,
      :name,
      :comments,
      :active_id
  )
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...