Параметры POST для Ruby on Rails на redirect_to - PullRequest
1 голос
/ 27 января 2010

Мне нужно позвонить по другому адресу в одном из моих контроллеров на моем сайте. Проблема в том, что со всеми параметрами, которые требует другой сайт, я переполняю URL. Есть ли способ вызвать другой URL-адрес с контроллера и отправить все параметры с помощью POST?

Я не ожидаю ответа от другого сайта. Кроме того, я думаю, что есть способ сделать это, используя библиотеку Net :: HTTP, но я не знаю, как.

Спасибо

Ответы [ 3 ]

4 голосов
/ 27 января 2010

Вы не можете одновременно выполнять перенаправление и отправку данных POST в спецификации HTTP. Перенаправления осуществляются путем отправки простого заголовка Location: otherlocation.html. Данные POST никуда не вписываются в эту систему.

Вы хотите, чтобы пользователь зашел на эту страницу, или вы просто хотите отправить данные в приложение самостоятельно? Если вы хотите отправить данные и не отправлять туда пользователя, используйте модуль Ruby Net :: HTTP. Если вы хотите отправить пользователя, вам может потребоваться вывести представление с формой и автоматически отправить его с помощью Javascript. (Не забудьте изящно деградировать, предложив кнопку отправки в noscript тегах.)

2 голосов
/ 23 декабря 2010

Вы также можете использовать вспышку для передачи информации. http://guides.rubyonrails.org/action_controller_overview.html#the-flash

2 голосов
/ 27 января 2010

Это из рубиновых документов :

require 'net/http'
require 'uri'

result = Net::HTTP.post_form(URI.parse('http://www.example.com/search.cgi'),
    {'q'=>'ruby', 'max'=>'50'})

Как видите, вы передаете параметры в виде удобного хэша, в отличие от других языков, которые мешают вам форматировать http.

...