У меня есть простой (одна таблица) API, и я хочу остановить сообщение об ошибке, появляющееся после успешного завершения POST / create.
Фон
Действие создания выглядит так
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
Когда я публикую новые данные в модели User, она работает (т.е. данные сохраняются в базе данных)
curl -H "Accept: application/json" -H "Content-type: application/json" -d '{"name": "IIII", "email": "IIIII"}' "http://localhost:3000/users/somekey"
Проблема
Хотя POST работает, я получаюследующая ошибка
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
не проходит.
Мой вопрос
Как мне остановить рельсы, пытающиеся перенаправить после успешного POST / создания?