ruby-on-rails - TypeError(没有将 nil 隐式转换为字符串) ruby on rails 5
问题描述
所以我有一个接受 JSON 作为有效负载的控制器
def create
@tournoi = Tournoi.new(payload: JSON.parse(params[:payload]))
if @tournoi.save
redirect_to root_url
flash[:success] = "Your tournament bracket has been validated!"
json 来自可编辑的 js 图,我使用 XMLHttpRquest 和 formData 保存 JSON:
function save() {
var tojs = myDiagram.model.toJSON();
var json = JSON.stringify(tojs);
var formData = new FormData();
formData.append("payload", json);
var request = new XMLHttpRequest();
request.open("post", "http://localhost:3000/malesingle", true);
request.send(formData);
}
JSON已成功插入我的控制器,我从我的tournois控制器重定向到我的create方法上的TypeError登录页面,我知道我的有效负载在保存之前为零,我不知道为什么我声明的方式@tournoi = Tournoi.new(payload: JSON.parse(params[:payload]))
不是保证从零到有效负载的转换..
解决方案
您将有效负载 json 提交到 rails 后端的方式错误。所以params不是json,它是json字符串你可以试试去掉这个
var json = JSON.stringify(tojs);
从代码行,并直接将 tojs 添加到 formdata
formData.append("payload", tojs);
推荐阅读
- python - 在heroku上部署Django应用程序时没有名为'config.settings'的模块(仍然没有从其他问题得到答案)
- flutter - 当我在flutter中使用sharedpreference离线保存对象列表时,它会自动转换为字符串......输出如下
- git - Windows 上 git-bash 的奇怪 git 行为
- go - Golang::=语法左侧的预期标识符
- html - 如何更改 svg 图标的笔画宽度?
- excel - Excel 连接函数
- node.js - 带有 $strLenCP 运算符的 MongoDB 服务器版本错误,寻找替代方法来查找字符串的长度
- java - 如何在 VS 代码中将引用的库添加到 Selenium Java 项目?
- spring-boot - 有没有办法在将 PDF 保存为 BLOB(字节数组)时不丢失嵌入的链接?
- android - 在 android 仿真期间没有出现我的 Toast 警报