我使用Ruby on Rails作为后端。创建记录时,会发生这样的错误:
在2018-06-26 15:09:31为127.0.0.1开始发布POST“ / spr_type_events” +0500由SprTypeEventsController#create作为JSON参数进行处理:{“ spr_type_event” => {}}不允许的参数: :spr_type_event在77毫秒内完成了500个内部服务器错误
NoMethodError(对于nil:NilClass,未定义的方法“保存”):
app / controllers / spr_type_events_controller.rb:17:在“创建”中
我已经不明白这里出了什么问题:
class SprTypeEventsController < ApplicationController
before_action :set_spr_type_event, only: [:show, :update, :destroy]
def index
@spr_type_events = SprTypeEvent.all
render json: @spr_type_events
end
def show
render json: @spr_type_event
end
def create
@spr_type_event = SprTypeEvent.new(spr_type_event_params)
if @spr_turbodrill_type.save
render json: @spr_type_event, status: :created, location: @spr_type_event
else
render json: @spr_type_event.erros, status: :unprocessable_entity
end
end
def update
if @spr_type_event.update(spr_type_event_params)
render json: @spr_type_event
else
render json: @spr_type_event.errors, status: :unprocessable_entity
end
end
def destroy
@spr_type_event.destroy
end
private
def set_spr_type_event
@spr_type_event = SprTypeEvent.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def spr_type_event_params
params.permit(
:type_id,
:date_begin,
:date_end,
:name,
:comments
)
end
end
答案 0 :(得分:1)
首先,您已经声明了一个像@spr_type_event
这样的变量,但是在save
这样的@spr_turbodrill_type
进行连接时调用,因此更改它,例如:@spr_type_event.save
请遵循以下修改的代码< / p>
def create
@spr_type_event = SprTypeEvent.new(spr_type_event_params)
if @spr_type_event.save
render json: @spr_type_event, status: :created, location: @spr_type_event
else
render json: @spr_type_event.erros, status: :unprocessable_entity
end
end
和类似这样的强参数方法,您可以保留要编写的代码的中断,但需要添加此require(:spr_type_event)
def spr_type_event_params
params.require(:spr_type_event).permit(:type_id, :date_begin, :date_end, :name, :comments)
end
答案 1 :(得分:0)
您没有在控制器中的任何地方初始化@spr_turbodrill_type
来创建方法,我认为@spr_type_event
应该在那里。就像下面的代码一样
def create
@spr_type_event = SprTypeEvent.new(spr_type_event_params)
if @spr_type_event.save
render json: @spr_type_event, status: :created, location: @spr_type_event
else
render json: @spr_type_event.erros, status: :unprocessable_entity
end
end