2009-10-30 17 views
5

Sinatra kolay adıyla herhangi bir gelen form alanını erişimi kolaylaştırır:Sinatra'daki tüm form alanlarına nasıl erişilir?

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

Ama nasıl bir tüm bir istek form alanları numaralandırmak geliyor? Dokümanlarda hiçbir şey bulamadım. Hatta

'u denedim, ancak request.body bir String değil, StringIO örneğidir. params karma ise

cevap

9

, deneyebilirsin:

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

onun sadece bir karma: Eğer ben sadece Sinatra'nın mükemmel API docs keşfedilen

+0

Evet, parazitler bir karma - ancak Rack API'sı belgelerin belirttiği gibi "GET ve POST verilerinin birleşimidir". Sadece POST verilerini bulmanın bir yoluna ihtiyacım vardı, bu yüzden request.POST yöntemi idealdir. – davidstamm

7

herhangi karma istiyorsunuz ile P yüzden sadece yineleme olduğunu Sinatra :: Request, Rack :: Request'un bir alt sınıfıdır. Sinatra işleyicileri için mevcut istek nesnesi, teslim edilen form alanlarının bir özetini döndüren bir POST yöntemine sahiptir.

request.POST.each { |k,v| puts "#{k} = #{v}" } 
İlgili konular