我一直在使用gojs库进行处理,这是一个可以让你生成图表的库,从锦标赛括号到家谱等等。
我正在使用保存功能通过 formData 将我的数据集提交给我的模型,
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);
}
我的控制器是将有效负载解析为params之后的一组操作。 def create
@tournoi = Tournoi.new(payload: JSON.parse(params[:payload]))
if @tournoi.save
redirect_to malesingle_url
我甚至使用序列化来避免在将对象传递到模型时出现任何问题:
class Tournoi < ApplicationRecord
serialize :payload, JSON
end
我的模型设置方式是将json对象作为'payload'接受到数据中,这要归功于postgrel on rails。
class CreateTournois < ActiveRecord::Migration[5.1]
def change
create_table :tournois do |t|
t.json 'payload'
t.timestamps
end
end
end
在浏览了tournoi之后,如果@tournoi.save redirect_to malesingle_url
,则假设以下操作是重定向到另一个视图
json对象通过参数传递为 payload ,它被插入到tournois表中,然后被提交到数据库中。
我得到一个 TypeError(没有将nil隐式转换为String):app / controllers / tournois_controller.rb:7:in create
单击“保存”按钮后,我的浏览器显示一个动作控制器异常,其中没有将nil隐式转换为字符串**突出显示@tournoi = Tournoi.new(payload: JSON.parse(params[:payload]))
在我的javascript控制台上检查我的控制台时,警告不推荐使用突变事件。请改用MutationObserver。 我上网看了一下,了解为什么我得到这个消息,他们都提到dom修改,这是我试图通过分配一个json对象数据,我不明白是在我的终端上显示我的对象保存,但我收到一个错误。对我来说真的没有任何意义。
答案 0 :(得分:0)
使用@tournoi = Tournoi.new(payload: JSON.parse(params[:payload]))
时总会出现错误,TypeError特别针对 JSON.parse(params [:payload])引发。
因此,只需修改方法创建:
def create
if @tournoi = Tournoi.new(payload: params['payload'])
@tournoi.save
.......
不解析参数会保存有效负载,但会保存另一个有效负载为
的tournoi我需要做的就是在我的模型中添加验证,以避免保存具有 nil 有效负载的tournoi:
class Tournoi < ApplicationRecord
validates :payload, presence: true, allow_nil: false
多数人完成工作:)