使用XMLHttpRequest rails将有效负载数据POST到数据库

时间:2018-04-05 16:25:35

标签: ruby-on-rails postgresql xmlhttprequest ruby-on-rails-5 gojs

我正在使用基于GOjs library的锦标赛支架,括号中有分数输入。

用户完成编辑括号后,我将括号保存为JSON变量:

function save() {
    var tojs = myDiagram.model.toJSON();
    var payload = JSON.parse(tojs);
    stringify_tojs = JSON.stringify(payload);
    myDiagram.isModified = false;

我使用XMLHttpRequest将有效负载发布到我的rails模型中,该模型处理' payload' :

var request = new XMLHttpRequest();
    request.onload = callback;
    request.open("post", "http://localhost:3000/malesingles");
    request.setRequestHeader("Content-Type", "application/json");
    request.send(payload);
  

我不知道我哪里出错但我确定它在我的身边   控制器参数,但我发现我的错误已经过了一个星期了   控制器看起来像这样:

@tournoi = Tournoi.new(bracket_params)
  if @tournoi.save
    redirect_to root_url
    flash[:success] = "Your tournament bracket has been validated!"
  #  redirect_to @tournoi
  else
    render 'new'
  end

我已将bracket_params包含在私人设置中

def bracket_params
      params.require(:tournoi).permit(:payload)
     end

尝试使用不同的方法来发布有效载荷没有真正起作用,会感谢一些帮助,以了解我出错的地方,我得到一个参数丢失或空:/。

1 个答案:

答案 0 :(得分:0)

@DezzH查看我的最新提交来自我的回购https://github.com/fabriziobertoglio1987/sprachspiel/tree/feature/purchase-system我刚刚使用coffescript构建类似的东西..提交包括我的工作描述

基本上我想到的是,post请求不会传递网址中的参数,因此在请求中找不到它们很容易,但您可以在网络选项卡中查看

从我传递的图像中可以看出

 createPurchase: -> 
    $.ajax
       url: "/products"
       method: "POST"
       dataType: "json"
       data: { items: {product_id: '1', name: 'test' }}
       error: (jqXHR, textStatus, errorThrown) ->
         console.log "AJAX Error: #{textStatus}"
       success: (data, textStatus, jqXHR) ->
         console.log "Successful AJAX call: #{data}"
         console.log data

enter image description here

然后我在控制器中设置了一个binding.pry,我可以在那里看到我的参数

enter image description here