使用jquery.ajax发送时如何在rails控制器中获取PUT参数

时间:2013-03-15 18:43:36

标签: ruby-on-rails-3 jquery

点击按钮我

(function() {
$("#btnStep2").click(function() {

    number = $('#btnStep2').attr('number');
     var dataString='number='+number+'&reserved='+$('#rd'+number).is(':checked')+'&environment=qa1';
    alert(dataString);
$.ajax({
    type: "PUT",
    url: "/tnrepos/"+number,
    contentType: "application/text; charset=utf-8",
    beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
    data: dataString, 
    success: function(data){ 
        alert("update successfully");

    }});
    return false;
});
});
服务器上的

    Started PUT "/tnrepos/12345" for 127.0.0.1 at 2013-03-15 11:38:03 -0700
Processing by TnreposController#update as */*
  Parameters: {"id"=>"12345"}

但我没有看到其他参数传递..

控制器中的

我打印参数

"action"=>"update", "controller"=>"tnrepos", "id"=>"12345"}

为什么没有其他参数?我测试了firefox和chrome。

1 个答案:

答案 0 :(得分:0)

$.ajax({
    type: "PUT",
    url: "/tnrepos/" + number,
    contentType: "application/text; charset=utf-8",
    beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
    data: {data : dataString} ,
    success: function(data){ 
        alert("update successfully");

    }});
    return false;
});
});

您可以看到数据的使用:“{data:dataString}”,上面。

现在,你的params [:data]将拥有dataString。

  

我建议将它们传递为“{number:number,reserved:   $('#rd'+ number).is(':checked')}并在控制器上访问它们   他们的名字如params [:number],params [:reserved]等等。

试一试,让我知道!