【发布时间】:2020-11-11 23:06:43
【问题描述】:
我遇到了这个问题,当我在表单中输入一个值时,值将变为 nil,因此它没有保存正确的值。
这是我提交所有者表单的示例。
它没有显示我的参数
<ActionController::Parameters {} permitted: true>
那么这里是后端返回的参数值
#<Owner id: 19, name: nil, phone_number: nil, real_estate_agent: nil, created_at: "2020-11-11 22:52:58", updated_at: "2020-11-11 22:52:58">
这是我浏览器前端的控制台响应示例。顺便说一句,与上述无关
Object { id: 11, name: null, phone_number: null, real_estate_agent: null, properties: [] }
这是我的所有者表格
<form id = "owner_form">
<div>
<label for='name'>Owner Name:</label>
<input type='text' id='name' name='name' placeholder="John Doe" />
</div>
<div>
<label for='phone_number'>Phone Number:</label>
<input type='text' id='phone_number' name='phone_number' placeholder="Phone Number" />
</div>
<div>
<label for='real_estate_agent'>Listing Agent:</label>
<input type='text' id='real_estate_agent' name='real_estate_agent' placeholder="Agent"/>
</div>
<div>
<input type='submit' id='owner_submit' value='Submit'/>
</div>
</form>
然后在我的 JavaScript 中,这就是我发布数据的内容。
ownerForm.addEventListener('submit',(event)=> {
event.preventDefault();
OwnerForm()
dropdownMenu()
ownerForm.reset()
})
function OwnerForm(){
let name = document.getElementById('name').value
let phone_number = document.getElementById('phone_number').value
let real_estate_agent = document.getElementById('real_estate_agent').value
let owner = {
name: name,
phone_number: phone_number,
real_estate_agent: real_estate_agent
}
let config ={
method: 'post',
body: JSON.stringify(owner),
header: {
'Content-Type': 'application/json',
"Accept": "application/json"
}
}
fetch(OWNERS_URL, config)
}
然后在这里使用强大的参数在后端“创建”操作,表单值被定向到。
class OwnersController < ApplicationController
def create
owner = Owner.create(owner_params)
if owner.save
render json: owner
end
end
private
def owner_params
params.permit(:name,:phone_number,:real_estate_agent)
end
end
我已确保我的键和变量在前端和后端都相同以保持一致性,但我目前无法解释这种行为,并想知道是否有人可以帮助我解释我需要更正的地方。
【问题讨论】:
标签: javascript html ruby-on-rails