Ошибка при передаче объекта JSON от интерфейса пользователя к API рельсов - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь отправить данные формы в rails api из моего интерфейса, но это происходит

Это мой код реакции на обработку данных формы

constructor(props) {
  super(props);
  this.user= {};
  this.state = this.getInitialState();
}

getInitialState = () => {
     const initialState = {
       email: "",
       password: ""
     };
     return initialState;
 }

change = e => {
  this.setState({
    [e.target.name]: e.target.value
  });
};

onSubmit = (e) => {
  e.preventDefault();
  this.user = JSON.stringify(this.state)
  this.user = "{\"user\":" + this.user + "}"
  console.log(this.user);
  fetch('http://localhost:3001/v1/users', {
    method: 'POST',
    body: this.user
  }).then(function(response) {
    console.log(response.json());
  })

  this.setState(this.getInitialState());
}

Этот код дает в консоли следующую строку:

{ "пользователь": { "электронная почта": "test@user.com", "пароль": "password123"}}

Рельсы:

class V1::UsersController < ApplicationController

def create

@user = User.new(user_params)

if @user.save
  render :create
else
  head(:unprocessable_entity)
 end
end
private

 def user_params
  params.require(:user).permit(:email, :password, :password_confirmation)
 end
end

То же самое с PAW дает положительные результаты

PAW

Пожалуйста, помогите. Я пытаюсь это исправить уже 2 дня.

Заранее спасибо.

1 Ответ

0 голосов
/ 29 октября 2018

Проблема здесь

this.user = "{\"user\":" + this.user + "}"

Это похоже на json, но на самом деле это строка. Вы можете использовать typeof, чтобы проверить это.

console.log(typeof this.user) //string

Есть много вариантов решения этой проблемы. Вот пример.

const users = {
  user: user
}
console.log(users)
const user_json = JSON.parse(JSON.stringify(users))
console.log(typeof user_json)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...