我发送一个应用程序/json 发布请求:
curl 'http://127.0.0.1:3000/api/flowers/growth' -H 'Content-Type:application/json' -d '{"type": 1}'
然后我使用 request.request_parameters ,输出为:
{"type"=>1, "flower"=>{}}
为什么会自动添加“flower”=>{}?
我怎样才能只获取 POST 数据,而不包括 Controller 信息
最佳答案
好的,在我自己在这个确切的问题上苦苦挣扎了几个小时,并通过调用堆栈挖掘之后,我找到了答案。
首先,我想解决这个问题的原因是因为如果使用了无效元素,我想向发件人提供反馈,而不是仅仅接受有效值而忽略其他值。因此,此页面上的其他解决方案对我不起作用。
所以问题的关键是这个叫做 ActionController::ParamsWrapper
的东西。 ,可在 actionpack-4.2.3/lib/action_controller/metal/params_wrapper.rb
中找到.此代码将 Controller 的请求参数包装在 Controller 名称中,以便更轻松地访问。然而,如果你有一个专用的 api JSON 接口(interface),这只会让生活变得更糟。
要告诉这个急切的“ helper ”,请在您的 Controller 中添加以下行:wrap_parameters format: []
关于ruby-on-rails - Rails request_parameters 包括 Controller 信息,如何只获取 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11191519/