缺少param或值为空:

时间:2016-10-31 03:59:03

标签: jquery ruby-on-rails ruby ajax

我有来自api的POST请求

我不想在我的应用程序中保存任何内容, 我只想向数据发送请求并获得一个好的

我的剧本

<script type="text/javascript">
$('input[type=submit]').click(function(e){
e.preventDefault();
var value = $('#form').serialize()

console.log(value);
$.ajax({
    url : 'https://1broker.com/api/v1/order/create.php?',
    type: 'post',
    dataType : 'html',
    data: value,
    beforeSend : function(){
        $('.load').show('100');
    },
    success : function(pre){
        $('.load').hide('100');
    }
   });
  });
 </script>

这是我的控制器

private

def set_position
  @position = Position.find(params[:id])
end


def position_params
  params.require(:position).permit(:symbol, :margin, :direction, :leverage, :order_type, :referral_id).permit(nil)
end

和表单

<form class="form-horizontal" id="form" method="post">
      <select class="form-control" name="symbol">
        <option> </option>
        <option>USDJPY</option>
        <option>EURUSD</option>
      </select>
        <input type="text" class="form-control" name="margin">
      <select class="form-control" name="direction">
        <option> </option>
        <option>long</option>
        <option>short</option>
      </select>
      <input class="form-control" name="leverage">
      <input type="hidden" name="order_type" value="market">
      <input type="hidden" name="referral_id" value="9918">
      <input class="form-control" name="stop_loss">
      <input class="form-control" name="take_profit">
    <button type="submit" class="btn btn-primary">Send</button>
  </form>
applicationController中的

我正在使用

protect_from_forgery with: :null_session

enter image description here

2 个答案:

答案 0 :(得分:0)

尝试在 ajax 电话中将data: value更改为data: {position: value}

$.ajax({
    url : 'https://1broker.com/api/v1/order/create.php?',
    type: 'post',
    dataType : 'html',
    data: {position: value},
    beforeSend : function(){
        $('.load').show('100');
    },
    success : function(pre){
        $('.load').hide('100');
    }
   });
  });

答案 1 :(得分:0)

我认为问题在于你的ajax调用与你的强对手搜索的内容不匹配。

  $.ajax({
    url : 'https://1broker.com/api/v1/order/create.php?',
    type: 'post',
    dataType : 'html',
    data: value,
    beforeSend : function(){
      $('.load').show('100');
    },
    success : function(pre){
     $('.load').hide('100');
    }
  });


  def position_params
    params.require(:position).permit(:symbol, :margin, :direction,:leverage, :order_type, :referral_id).permit(nil)
  end

你可以像Gokul M所说的那样改变你的ajax电话

  data: { position: value }

或者如果您不需要采取其他行动,您可以修改您的强对手,不要求职位:

  def position_params
    params.permit(:symbol, :margin, :direction,:leverage, :order_type, :referral_id).permit(nil)
  end