私は Sinatra アプリを持っており、ほとんどのコントローラーで json が入ってきて、params オブジェクトで自動的に取得されます。ただし、request.bodyパラメーターをJSONとして解析し、paramsハッシュにマージする前にメソッドを使用してトリックをしない限り、パラメーターをまったく取得しないポストアクションがあります。
以下はコントローラーと filter メソッドです。
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 呼び出しをコメントアウトすると、パラメーターは空になります。
ビフォア自体はハックのように感じます。私はそれらのパラメーターが何があっても入ってくることを期待しています...私はそこで何か間違ったことをしているに違いありませんが、それが何であるかわかりません。
どんな助けでも大歓迎です...