我有一个 Sinatra 应用程序,并且在我的大多数控制器中,json 都会进入并在 params 对象中自动获取。但是,我有一个根本不获取参数的 post 操作,除非我使用 before 方法来拉取 request.body 参数,将它们解析为 JSON 并将它们合并到 params 哈希中。
这是控制器以及过滤器方法:
before do
if request.request_method == "POST"
body_parameters = request.body.read
params.merge!(JSON.parse(body_parameters))
end
end
post '/locations/new' do
content_type :json
puts "params after post params method = #{params.inspect}"
... other code ...
end
我看到的输出基本上是控制器动作中的参数实际上是正确的。但是,如果我注释掉之前的调用,则参数为空。
之前本身感觉就像一个黑客。无论如何,我都希望那些参数会进来……我一定在里面做错了什么,但我不知道那是什么。
任何帮助将不胜感激......