Ruby: как экранировать результат Ajax-запроса

Я написал ruby-скрипт для очистки экрана с помощью драгоценных камней «open-uri» и «hpricot» - пока все работает отлично.

Но теперь мне нужно экранировать что-то, что возвращается после отправки формы с помощью функции javascript (вызывается обработчиком событий onchange из раскрывающегося меню):

function submit_form() {
  document.list.action="/some/sort/of/path";
  document.list.submit();
}

Насколько мне известно, open-uri позволяет отправлять только запросы GET. И если я не ошибаюсь, здесь нужен был бы POST-запрос.

Итак, мой вопрос: что мне нужно установить и «требовать», и как тогда будет выглядеть рубиновый код (чтобы сделать этот запрос POST) - извините, я все еще в значительной степени n00b...

Большое спасибо за Вашу помощь!

Том


person TomDogg    schedule 05.06.2011    source источник


Ответы (2)


Я думаю, вам определенно следует использовать Mechanize. Он предоставляет отличный интерфейс для взаимодействия с удаленными страницами, формами на них и т. д. (см. этот пример).

person Daniel O'Hara    schedule 05.06.2011
comment
Большое спасибо! Я только что прочитал документацию - действительно очень хорошее решение! Кроме того, Mechanize интегрируется с Nokogiri. - person TomDogg; 05.06.2011

Стандартная библиотека Ruby имеет класс http://www.ruby-doc.org/stdlib/libdoc/net/http/rdoc/index.html, который, естественно, поддерживает операцию POST.

Net::HTTP.post_form(URI.parse('http://www.example.com/some/sort/of/path')

Если вы обнаружите, что API там не самый оптимальный, взгляните на http://httparty.rubyforge.org/.

Наконец, несмотря на то, что hpricot является прекрасным драгоценным камнем, он больше не разрабатывается активно. Вам следует подумать о переходе на nokogiri, который практически заменяет hpricot и улучшает его.

person Elad    schedule 05.06.2011
comment
Спасибо за участие - интересно! - person TomDogg; 05.06.2011