Как остановить перенаправление после API POST / create в rails - NoMethodError (неопределенный метод `users_url 'для #) - PullRequest
0 голосов
/ 06 июля 2019

У меня есть простой (одна таблица) 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 / создания?

1 Ответ

1 голос
/ 07 июля 2019

Как я уже говорил в комментарии, проблема заключалась в location аргументе render, который вызывает перенаправление.

Решение состоит в том, чтобы удалить location: @user рендера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...