Rails 5.2 如何在控制器中获取表单数据的值

6

我有一个简单的HTML表单,通过使用Fetch API和FormData向服务器发送一些数据。

我正在发送roleuser_id及其值到服务器。在控制器中,当我打印params时,我得到:

{"-----------------------------1190833731009709688837505639\r\nContent-Disposition: form-data; name"=>"\"role\"\r\n\r\nadmin\r\n-----------------------------1190833731009709688837505639\r\nContent-Disposition: form-data; name=\"user_id\"\r\n\r\n1\r\n-----------------------------1190833731009709688837505639--\r\n", "controller"=>"users", "action"=>"updaterole", "id"=>"1"}

如何从中访问并获取roleuser_id的值?

这是我客户端脚本:

var form = document.querySelector("#roleForm");
var formdata = new FormData(form);

fetch(url, {
    method: "PATCH",
    headers: { 'Content-Type':'multipart/form-data' },
    body: formdata,
}).then(
    response => response.text() // .json(), etc.
    // same as function(response) {return response.text();}
).then(
    html => {
        console.log(html)
    }
);

你能打印出你在服务器上看到的 params 的值吗?当你发布问题时,似乎它丢失了。 - Cimm
这是在控制台打印参数时的输出:{"-----------------------------1190833731009709688837505639\r\nContent-Disposition: form-data; name"=>""role"\r\n\r\nadmin\r\n-----------------------------1190833731009709688837505639\r\nContent-Disposition: form-data; name="user_id"\r\n\r\n1\r\n-----------------------------1190833731009709688837505639--\r\n", "controller"=>"users", "action"=>"updaterole", "id"=>"1"} - devmrh
谢谢大家的帮助...我只是在fetch请求中删除了(headers: {'Content-Type':'multipart/form-data'}),现在我的问题已经解决了。 - devmrh
@ultra2mh,你能否发布解决方案,以免让问题无人回答。 - Vasilisa
好的,我已经添加了解决方案。 - devmrh
显示剩余2条评论
1个回答

2
在我的情况下,正如在评论中已经提到的那样,我们有一个不正确的请求体。我通过从fetch请求中删除headers: {'Content-Type':'multipart/form-data'}来解决它。看起来我们不需要将Content-Type添加到标头中。无论如何,我的问题都得到了解决。"最初的回答"

对我很有效,谢谢。 - DivinesLight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接