Я получаю ошибку Bad Request 400, когда пытаюсь отправить форму из React в свой API в Ruby on Rails. - PullRequest
0 голосов
/ 28 мая 2020

Я предварительно заполнил некоторые данные формы и считаю, что все мои конечные точки верны. Когда я нажимаю, чтобы отправить форму, я получаю ошибку 400. Есть идеи, что я делаю неправильно?

class MessageForm extends Component {
    constructor(props){
    super(props);
        this.state=
        {
            messages:[],
            message: "",
            sender_id: localStorage.getItem("userId"),
            receiver_id: this.props.request.owner_id,
            request_id: this.props.request.id
        };
    }

    handleChange = (event) => 
      {
      const {name, value} = event.target
      this.setState({
        [name]: value
      })
    };

      handleSubmit = (event) => {
        event.preventDefault()
        const {sender_id, receiver_id, message, request_id} = this.state
        let inquiry = 
        {
          sender_id: sender_id,
          receiver_id: receiver_id,
          message: message,
          request_id: request_id
        } 

        axios.post("http://localhost:3003/messages", {inquiry},
        { withCredentials: true }
        )
        .then(response => {
            if (response.data.status === 'success') {
            this.props.handleSuccessfulAuth(response.data);            
        }
    })        
        .catch(error => {
            console.log("message error", error);
        });
        event.preventDefault();
    };


     render() {
       return(
        <div className="Message">
                <form onSubmit={this.handleSubmit}>
                    <input
                    name="sender_id"
                    value={this.state.sender_id}
                    onChange={this.handleChange}
                    required
                    />

                    <br/>

                    <input
                    name="receiver_id"
                    value={this.state.receiver_id}
                    onChange={this.handleChange}
                    required
                    />

                    <br/>

                    <input
                    type="text"
                    name="message"
                    placeholder="message"
                    value={this.state.message}
                    onChange={this.handleChange}
                    required
                    />

                    <br/>

                    <input
                      name="request_id"
                      value={this.state.request_id}
                      onChange={this.handleChange}
                      required
                      />

                      <br/>

                      <button type="submit">Send</button>

                </form>
        </div>
      );
  }
}

export default MessageForm;



This is the schema file from the rails API.


      ActiveRecord::Schema.define(version: 2020_05_14_032048) do
        create_table "messages", force: :cascade do |t|
        t.string "message"
        t.integer "sender_id"
        t.integer "receiver_id"
        t.integer "request_id"
        t.datetime "created_at", precision: 6, null: false
        t.datetime "updated_at", precision: 6, null: false
      end

      create_table "requests", force: :cascade do |t|
        t.string "title"
        t.string "description"
        t.string "address"
        t.decimal "longitude"
        t.decimal "latitude"
        t.integer "owner_id"
        t.string "request_type"
        t.datetime "created_at", precision: 6, null: false
        t.datetime "updated_at", precision: 6, null: false
      end

      create_table "users", force: :cascade do |t|
        t.string "username"
        t.string "email"
        t.string "password_digest"
        t.datetime "created_at", precision: 6, null: false
        t.datetime "updated_at", precision: 6, null: false
      end

      create_table "volunteers", force: :cascade do |t|
        t.datetime "created_at", precision: 6, null: false
        t.datetime "updated_at", precision: 6, null: false
      end

    end

Вывод Rails

    ActionController::ParameterMissing (param is missing or the value is empty: messages):                                                                                                                                                                                                                                                                                                                                                app/controllers/messages_controller.rb:72:in `message_params'                                                                                                                                                      app/controllers/messages_controller.rb:27:in `create'                                                                                                                                                              ArgumentError (wrong number of arguments (given 0, expected 1)):                                                                                                                                                                                                                                                                                                                                                                      app/controllers/messages_controller.rb:72:in `message_params'                                                                                                                                                      app/controllers/messages_controller.rb:27:in `create'                                                                                                                                                              Started POST "/messages" for ::1 at 2020-05-29 14:11:05 -0600                                                                                                                                                         (0.1ms)  SELECT sqlite_version(*)                                                                                                                                                                               Processing by MessagesController#create as HTML                                                                                                                                                                      Parameters: {"inquiry"=>{"sender_id"=>"1", "receiver_id"=>2, "message"=>"i can help you", "request_id"=>5}, "message"=>{}}                                                                                       Completed 400 Bad Request in 3ms (ActiveRecord: 2.1ms | Allocations: 629)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ActionController::ParameterMissing (param is missing or the value is empty: messages):                                                                                                                                                                                                                                                                                                                                                app/controllers/messages_controller.rb:72:in `message_params'                                                                                                                                                      app/controllers/messages_controller.rb:27:in `create'  

Я новичок в React и Rails, но работаю над этим проектом почти год. указатели были бы очень признательны.

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