Как получить доступ ко всем полям формы в Синатре? - PullRequest
5 голосов
/ 31 октября 2009

Синатра позволяет легко получить доступ к любому конкретному полю входящей формы по имени:

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

Но как можно перечислить более все полей формы в запросе? Я ничего не нашел в документации. Я даже попробовал

request.body.split('&') 

но request.body является экземпляром StringIO, а не строкой.

Ответы [ 3 ]

9 голосов
/ 31 октября 2009

Если params - хеш, вы можете попробовать:

params.keys.each do |k|
   puts "#{k} - #{params[k]}"
end
7 голосов
/ 31 октября 2009

Я только что обнаружил в превосходных документах API Sinatra, что Sinatra :: Request является подклассом Rack :: Request. Объект запроса, доступный для наследников обработчиков Sinatra, имеет метод POST, который возвращает хэш отправленных полей формы.

request.POST.each { |k,v| puts "#{k} = #{v}" }
0 голосов
/ 31 октября 2009

это просто хеш: P, так что просто повторяйте его, как если бы вы использовали любой хеш

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...