ruby-on-rails 从Rails请求中提取实际的POST参数

b1payxdu  于 2023-08-08  发布在  Ruby
关注(0)|答案(2)|浏览(145)

我试图从Rails中的 AJAX 表单提交中解析POST参数,但是由于某种原因,它一直包含一个嵌套的、重复的参数版本,我不知道为什么。

** AJAX :**

$.ajax({
    type: 'POST',
    url: url,
    data: JSON.stringify({foo:'bar',timestamp:Date.now()}),
    dataType: 'json',
    contentType: 'application/json; charset=utf-8'
  });

字符串

轨道:

class TestController < ApplicationController

  def post_test
    puts "RAW POST: #{request.raw_post}"
    puts "POST PARAMS: #{request.request_parameters().to_json}"
  end

end

结果:

原始邮件:{“foo”:“bar”,“timestamp”:1690813226909}
POST参数:© 2019 - 2019版权所有粤ICP备16004449号
为什么request_parameters()方法包含冗余的嵌套参数集?

slmsl1lt

slmsl1lt1#

几乎可以肯定,因为您配置了wrap_parameters

更新

嗯,看起来这在Rails 7中已经自动完成了,即使没有配置wrap_parameters

vngu2lb8

vngu2lb82#

在Jquery上阅读 AJAX 的文档:https://api.jquery.com/jquery.ajax/可以将对象、字符串或数组传递给数据参数

$.ajax({
  type: 'POST',
  url: url,
  data: { foo:'bar', timestamp:Date.now() },
  dataType: 'json',
  contentType: 'application/json; charset=utf-8'
});

字符串
通过这种方式,你可以发送一个完整的对象,而不需要解析为字符串,并通过以下方式在Rails上接收它:

class TestController < ApplicationController

  def post_test
    puts "All data: #{params}"
  end

end


PD:对不起,我的英语不好

相关问题