在用户注册页面之后,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>
答案 0 :(得分:3)
您应该从控制器执行 POST 请求。
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)
您可以使用httparty gem来发布请求。
答案 1 :(得分:1)
不,不是你想要的方式。
正如其他人所说,您可以在控制器内进行POST,并接收响应,但如果您希望将浏览器发布到远程页面,则必须通过表单。一个常见的解决方案是通过javascript在加载时提交表单。 e.g。
<body onload="document.forms['myform'].submit();">
<form id="myform">
…
</form>
</body>
答案 2 :(得分:0)
没有理由不能在Ruby标准库中使用uri和net / http从控制器发布信息并处理来自服务器的响应。
可以在此处找到使用net / http的一些好例子。 https://github.com/augustl/net-http-cheat-sheet/blob/master/post_form.rb
仍然可能不是解决这个问题的最佳方法。
答案 3 :(得分:0)
这可能是晚了几年的响应,但是如果有人还在寻找,我发现此Repost plugin可以实现此目的。
可以像控制器中的常规redirect_to
方法一样使用。
redirect_post('https://external-url.io/endpoint', params: {...})