redirect_to上的Ruby on Rails POST参数

时间:2010-01-27 03:29:15

标签: ruby-on-rails post parameters

我必须在我网站上的某个控制器中拨打其他网址。问题是,对于所有参数,其他站点要求我溢出网址。无论如何从控制器调用另一个URL并使用POST发送所有参数?

我不期待其他网站的回复。另外,我认为有一种方法可以使用Net :: HTTP库来实现这一点,我想我不知道如何。

由于

3 个答案:

答案 0 :(得分:4)

您无法在HTTP规范中同时执行重定向和发送POST数据。重定向通过发送简单的Location: otherlocation.html标头来实现。 POST数据不适合该系统的任何位置。

您是否希望用户转到此页面,或者您是否只想将数据发送到应用程序?如果要发送数据而不是将用户发送到那里,请使用Ruby的Net :: HTTP模块。如果要发送用户,可能会强制您输出带有表单的视图,并使用Javascript自动提交。 (不要忘记通过在noscript标签中提供提交按钮来优雅地降级。)

答案 1 :(得分:2)

这来自ruby docs

require 'net/http'
require 'uri'

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

正如你所看到的,你将params作为一个方便的哈希传递,不像其他语言让你弄乱了http格式。

答案 2 :(得分:2)