2009-10-30 46 views
5

Sinatra giúp bạn dễ dàng truy cập vào bất kỳ lĩnh vực hình thức đến cụ thể theo tên:Làm cách nào để truy cập tất cả các trường biểu mẫu trong Sinatra?

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

Nhưng làm thế nào để liệt kê trên tất cả các trường mẫu trong một yêu cầu? Tôi không tìm thấy gì trong tài liệu. Tôi thậm chí đã thử

request.body.split('&') 

nhưng request.body là một thể hiện của StringIO chứ không phải là một chuỗi.

Trả lời

9

Nếu params là một hash, bạn có thể thử:

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

của nó chỉ là một băm: P vì vậy chỉ cần lặp nó như bạn làm với bất kỳ băm

+0

Có, thông số là băm - nhưng đó là "liên kết của dữ liệu GET và POST" như tài liệu API giá đặt nó. Tôi cần một cách để chỉ tìm dữ liệu POST, vì vậy phương thức request.POST là lý tưởng. – davidstamm

7

Tôi chỉ phát hiện trong tài liệu API tuyệt vời Sinatra rằng Sinatra :: Yêu cầu là một phân lớp của Rack :: Request. Đối tượng yêu cầu có sẵn cho các thừa kế trình xử lý Sinatra có phương thức POST trả về một mã băm của các trường biểu mẫu đã gửi.

request.POST.each { |k,v| puts "#{k} = #{v}" } 
Các vấn đề liên quan