Я предварительно заполнил некоторые данные формы и считаю, что все мои конечные точки верны. Когда я нажимаю, чтобы отправить форму, я получаю ошибку 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, но работаю над этим проектом почти год. указатели были бы очень признательны.