Ruby on rails 如何在不使用表单的情况下从rails应用程序发布到外部url

Ruby on rails 如何在不使用表单的情况下从rails应用程序发布到外部url,ruby-on-rails,ajax,payment-gateway,Ruby On Rails,Ajax,Payment Gateway,我可以使用html表单发布到我的支付网关。但我有一个新的要求。现在,单击“付款”按钮,我必须验证该项目是否仍然可供购买,如果可用,然后自动将付款表单发布到网关 也就是说,我想在点击按钮时执行一些rails控制器代码,然后如果验证成功,我想用params重定向到一个外部url(支付网关) 我读到,在rails中使用redirect_to发布是不可能的。使用ajax发布到外部url也是不可能的。我应该如何实现它 您可以像这样使用Ruby: require "net/http" require "ur

我可以使用html表单发布到我的支付网关。但我有一个新的要求。现在,单击“付款”按钮,我必须验证该项目是否仍然可供购买,如果可用,然后自动将付款表单发布到网关

也就是说,我想在点击按钮时执行一些rails控制器代码,然后如果验证成功,我想用params重定向到一个外部url(支付网关)

我读到,在rails中使用redirect_to发布是不可能的。使用ajax发布到外部url也是不可能的。我应该如何实现它

您可以像这样使用Ruby:

require "net/http"
require "uri"

uri = URI.parse("http://example.com/search")
params = {"foo" => "value one", "bar" => "value two"}


# Shortcut way
response = Net::HTTP.post_form(uri, params)


# With more control
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(params)
response = http.request(request)


puts response.code             # => 200
puts response.body             # => The body (HTML, JSON, etc)

我就是这样处理的。在结帐页面上,我没有生成付款表单,而是用remote:true生成了一个指向“付款”操作的链接。然后我验证了“付款”操作的所有检查。在验证失败的情况下重定向到主页,并在付款成功的情况下呈现payment.js.erb。为付款表单编写了一个新的部分“\u payment\u form.html.erb”。现在在payment.js.erb中,我动态呈现payment_表单,并将其添加到某个div中,然后使用jquery提交表单。实际上,我希望在成功验证后重定向到我的支付网关。我使用ajax发布(remote:true),然后对控制器的操作(payment)进行必要的验证,并呈现payment.js.erb,然后在payment.js.erb中呈现一个表单,并使用jquery将其提交给payment gateway。感谢您的回答。它帮助我完成了退款API调用,我想在应用程序中捕获响应。