Html 从Rails控制器发布并重定向到外部站点?

Html 从Rails控制器发布并重定向到外部站点?,html,ruby-on-rails,http-post,Html,Ruby On Rails,Http Post,在用户注册页面之后,web客户端将进入此页面,该页面仅包含一个“继续”按钮。但是我想跳过这一页,转到付款页。有没有办法在控制器中完全执行此操作 <form method="post" action="https://www.ccavenue.com/shopzone/cc_details.jsp"> <input type=hidden name=Merchant_Id value="<%= @Merchant_id %>"> <inpu

在用户注册页面之后,web客户端将进入此页面,该页面仅包含一个“继续”按钮。但是我想跳过这一页,转到付款页。有没有办法在控制器中完全执行此操作

<form method="post" action="https://www.ccavenue.com/shopzone/cc_details.jsp">
    <input type=hidden name=Merchant_Id value="<%= @Merchant_id %>">
    <input type=hidden name=Amount value="<%= @Amount %>">
    <input type=hidden name=Order_Id value="<%= @user_id %>">
    <input type=hidden name=Redirect_Url value="<%= @redirect_url %>">
    <input type=hidden name=Checksum value="<%= @checksum %>">
    <input type="submit" class="Register_button" value="Proceed to payment">
</form>

您应该执行发布来自控制器的请求

uri = URI.parse("https://www.ccavenue.com/shopzone/cc_details.jsp")
http = Net::HTTP.new(uri.host, uri.port)

form_data = {
  "Merchant_Id" => @Merchant_id,
  "Amount" => @Amount,
  "Order_Id" => @user_id,
  "Redirect_Url" => @redirect_url,
  "Checksum" => @checksum
}

request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(form_data)

response = http.request(request)

您可以使用gem进行post请求。

您没有理由不能使用Ruby标准库中的uri和net/http从控制器进行post,并处理来自服务器的响应

这里可以找到一些使用net/http的好例子


不过,这可能不是最好的处理方法。

不,不是你想要的方式

正如其他人所说,您可以从控制器内发布并接收响应,但如果您希望浏览器发布到远程页面,则必须通过表单。一个常见的解决方案是通过javascript在加载时提交表单。e、 g

<body onload="document.forms['myform'].submit();">
    <form id="myform">
        …
    </form>
</body>

这可能是几年后的反应,但如果有人还在看,我发现这可能实现这种行为

可以像控制器中的正常
重定向到
方法一样使用

redirect_post('https://external-url.io/endpoint', params: {...})

嘿,德米里奇!!感谢您的回复,我希望页面用参数重定向到指定的URL!!通过使用POST请求,我只能发送参数和响应。但是,重定向没有发生。嗨@Aahlad!你能解决这个问题吗?我正试图解决同样的问题。谢谢