簡體   English   中英

Ruby on Rails — jQuery在另一個發布請求之前未提交放置請求

[英]Ruby on rails — Jquery not submiting put request before another post request

我基本上想單擊一個按鈕,然后在用戶單擊另一個按鈕時提交一個表單。 表單已提交,但未單擊按鈕。

控制器中的方法(放置):

def set_everything
    user.update_column(:everything_set, true)
end

然后我有一個表格:

<%= form_tag("http://someotherwebsite.com/post_method", method: :post, id:"form")%>
     <%= some_field %>
     <button type="button" id="form-button">Done</button>
<% end %>

然后在同一視圖上,我還有另一個link_to:

<%= link_to set_everything_path, method: :put, id:"set-everything-button", style:"display:none" %>

我的Jquery代碼:

$(document).ready(function(){
   $('#form-button').click(function(){
     $('#set-everything-button').trigger('click');
     setTimeout(function(){ $('form').submit();}, 2000);
   });
});

現在,我也嘗試使用button_to而不是link_to,但是仍然無法單擊它,當我手動嘗試時,它可以正常工作。

將目標網址放在按鈕上的數據屬性中:

<button type="button" id="form-button" data-trigger-url="<%= set_everything_path %>">Done</button>

直接在點擊處理程序中發送PUT請求:

$(document).ready(function(){
   $('#form-button').click(function(event){
     event.preventDefault();
     var form = $(this).closest('form');
     var url = $(this).data('trigger-url');
     $.ajax({
       url: url,
       method: 'PUT',
       dataType: 'html',
       success: function(){
         form.submit()
       }
     })
   });
});

不要忘記從控制器動作中發回200(OK)響應,以便javascript運行success處理程序(並因此提交表單):

def set_everything
  user.update_columns(everything_set: true)
  head :ok, content_type: "text/html"
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM