ruby-on-rails - 如何使用 post fetch 请求将反应对象发送到 rails api?406 错误
问题描述
我目前正在开发一个使用 react 和 ruby on rails 的项目。我现在的目标是在提交我的反应表单时使用 fetch 发送一个发布请求,以便在我的后端 api 中创建和存储我的用户。我的问题是,后端没有正确接收我的数据,导致 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",
}
})
导轨代码:
用户控制器-
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?
return 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
推荐阅读
- reactjs - React Redux 操作
- javascript - 在苹果 iphone 上,点击通知会捕获什么事件?
- powershell - 带变量的导入证书
- android - 在 Android Studio 4.0(Canary) 中找不到预览窗口的位置
- typescript - 如何扩展 $options 属性的类型?
- javascript - 如何仅使用 Node.js 后端代码将浏览器重定向到另一个站点?
- git - 如何防止“开发”被合并到“发布”中?
- python - 为什么我收到的 ARP 数据包总是有相同的 MAC 地址?
- emacs - 每次我重新安排任务时如何插入预定时间来记录
- google-cloud-platform - 允许每个用户拥有 Google Cloud Storage 对象所有权的 IAM/ACL 政策