【发布时间】:2021-01-30 05:32:04
【问题描述】:
我有一个 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
我看到的输出基本上是控制器动作中的参数实际上是正确的。但是,如果我注释掉之前的调用,则参数为空。
before 本身感觉就像一个 hack。无论如何,我都希望那些参数会进来……我一定在里面做错了什么,但我不知道那是什么。
任何帮助将不胜感激......
【问题讨论】: