简体   繁体   English

Ajax自动表单提交与rails4

[英]ajax auto form submit with rails4

I'm using rails4.2.0 in my e-commerce site, when a user submit his payment type, I want to redirect outside website. 我在电子商务网站中使用rails4.2.0,当用户提交付款方式时,我想重定向到外部网站。 The flow is below. 流程如下。

  1. a user choose payment type 用户选择付款方式
  2. use click submit button -- ajax (format js) -- 使用点击提交按钮-ajax(格式js)-
  3. redirect to outside website using post method 使用发布方法重定向到外部网站

source of 2 and 3 are like , 2和3的来源就像

create.html.erb create.html.erb

<%= form_for(:user,:url => { controller: "settlements", action: "settlement"},  remote: true, html: {class: :settlement_form}) do |f| %>
<%= f.radio_button :settlement_type, 0 %>paypal
<%= f.radio_button :settlement_type, 1 %>credit card
<%= f.hidden_field :email, :value => @user.email %>
<%= f.hidden_field :fee_type, :value => @user.fee_type %>
<%= f.submit "Submit", data: { disable_with: "Please wait..." }, class: "btn btn-warning" %>

settlement_controller 结算控制器

def settlement
  user = User.new(user_params)
  if user.save
    # parameters for outside website
    @payment_params
  else
    render "new"
  end
end

settlement.js.erb 沉降.js.erb

var form = $('<form></form>',{id:"pay",action:'http://outside_ec_site_url/hoge',method:'POST'}).hide();
var body = $('redirect');
body.append(form);
form.append($('<input/>', {type: 'hidden', name: 'something', value: <%=      @payment_params[:something] %>}));
form.append($('<input/>', {type: 'hidden', name: 'something', value: <%=   @payment_params[:something] %>}))
form.submit();

I fixed this problem, but I want to know better method. 我已解决此问题,但我想知道更好的方法。

changed settlement.js.erb like, 更改了结帐.js.erb,

$("#redirect").html("<%= escape_javascript(render :partial => 'pay' ) %>");

and created new file _pay.html.erb 并创建了新文件_pay.html.erb

<script>
$('<form/>', {id: 'paygent',action: "outside_website_url",  method: "POST"})
  .append($('<input/>', {type: 'hidden', name: 'something1', value: "<%= @payment_params[:somthing1] %>"}))
  .append($('<input/>', {type: 'hidden', name: 'something2', value: "<%= @paygent_params[:something2] %>"}))
  .appendTo(document.body)
  .submit();
</script>

then, it works. 然后,它起作用。 Do you know any other method? 你知道其他方法吗? Any idea is appriciated. 任何想法都适用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM