如何在 POST/create in rails API 后停止重定向 - NoMethodError (#<UsersController:0x00007f91363ebee8> 的未定



>我有一个简单的(一个表)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路由失败。

我的问题

如何在成功开机自检/创建后阻止轨道尝试重定向?

就像我在评论中说的,问题是触发重定向的renderlocation参数。

解决方案是删除渲染的location: @user

相关内容

最新更新