2009-10-30 8 views
5

シナトラは、名前によって、特定の入ってくるのフォームフィールドにアクセスすることが容易になります:Sinatraのフォームフィールドにはどのようにアクセスすればよいですか?

post "/" do 
    params['form_field_name'] 
end 

しかし、どのように1は、要求内すべて以上のフォームフィールドを列挙していますか?私はドキュメンテーションには何も見つかりませんでした。私も試しました

request.body.split('&') 

しかし、request.bodyはStringIOのインスタンスであり、文字列ではありません。

答えて

9

paramsがハッシュされている場合は、試すことができます:

params.keys.each do |k| 
    puts "#{k} - #{params[k]}" 
end 
0

そのわずかハッシュ:Pこれだけ、私はちょうどそのシナトラの優れたAPIドキュメントに発見されたハッシュ

+0

はい、paramsはハッシュですが、Rack APIドキュメントに書かれているように、「GETとPOSTデータの和集合」です。 POSTデータだけを見つける方法が必要だったので、request.POSTメソッドが理想的です。 – davidstamm

7

であなたのようなことを考え反復Sinatra :: RequestはRack :: Requestのサブクラスです。 Sinatraハンドラが利用できるリクエストオブジェクトには、送信されたフォームフィールドのハッシュを返すPOSTメソッドがあります。

request.POST.each { |k,v| puts "#{k} = #{v}" } 
関連する問題