如何将react对象发送到rails api与post fetch请求?406错误



我目前正在做一个使用react和ruby on rails的项目。我现在的目标是发送一个post请求,使用fetch在我的后端api中创建和存储我的用户,然后提交我的react表单。我的问题是,后端没有正确接收我的数据,导致406错误。我觉得我什么都试过了,我要疯了,帮帮我。

反应代码:

——

<form onSubmit={handleSubmit}> 
<label>Name:</label>
<input type="text" required value={name} onChange={handleNameChange} name="name" placeholder="name"/>
<label>Password:</label>
<input type="password" required value={password} onChange={handlePasswordChange} name="password" placeholder="password"/>
<input type="submit" value="Create Account"/>
</form>

——方法

const [name, setName] = useState("")
const [password, setPassword] = useState("")
const handleNameChange = (e) => {
setName(e.target.value);
}
const handlePasswordChange = (e) => {
setPassword(e.target.value);
}
const handleSubmit = (e) => {
e.preventDefault();
const data = {name, password}

fetch("http://localhost:3000/users", {
method: 'POST',
body: JSON.stringify(data),
headers: {
Content_Type: "application/json",
}
})
RAILS代码:

用户控制器——

def create
user = User.create(user_params)
if user.valid?
payload = {user_id: user.id}
token = encode_token(payload)
render json: { user: user, jwt: token }
else
render json: { error: 'failed to create user' }, status: :not_acceptable
end
end

private

def user_params
params.permit(:name, :password)
end

——错误后端误差

看起来user.valid?返回false,所以您的else语句开始:

render json: { error: 'failed to create user' }, status: :not_acceptable

status: :not_acceptable产生406错误。

您可能应该包括用户无效的原因,并返回一个错误的请求响应:

render json: { error: user.errors.full_messages}, status: :bad_request

相关内容

  • 没有找到相关文章

最新更新