>我有一个简单的(一个表)API,并希望在成功开机自检/创建后停止出现错误消息。
背景
创建操作如下所示
def create
@user = User.new(user_params)
if @user.save
render json: @user, status: :created, location: @user
else
render json: @user.errors, status: :unprocessable_entity
end
end
private
def user_params
params.require(:user).permit(:name, :email)
end
当我将新数据发布到用户模型中时,它可以工作(即数据保存到数据库)
curl -H "Accept: application/json" -H "Content-type: application/json" -d '{"name": "IIII", "email": "IIIII"}' "http://localhost:3000/users/somekey"
问题所在
尽管开机自检有效,但我收到以下错误
Completed 500 Internal Server Error in 61ms (ActiveRecord: 20.2ms)
NoMethodError (undefined method `user_url' for #<UserssController:0x00007f91363ebee8>):
app/controllers/users_controller.rb:22:in `create'
发生此错误是因为在 POST 之后,rails 尝试重定向到users_url
,并且因为我的路由有点不同(即它们包含:key
,如下所示:post 'users/:key' => 'users#create'
),users_url
路由失败。
我的问题
如何在成功开机自检/创建后阻止轨道尝试重定向?
就像我在评论中说的,问题是触发重定向的render
的location
参数。
解决方案是删除渲染的location: @user
。