簡體   English   中英

在Rails中提交表單而無需重新加載頁面

[英]submit form in Rails without page reload

我在阻止pagereload提交表單時遇到問題。

我的HTML:

<%= form_for @foo, html: {multipart: true}, remote: true do |f| %>
   <%= f.check_box :bar, :id => "bar_id", :onchange => "submit_function(this.form)" %>
<% end %>

我的Javascript:

function submit_function(form){
    form.submit(function (ev) {
        ev.preventDefault();
    });
}

我的控制器:

def update

   // awesome things for update

   respond_to do |format|
     format.html { redirect_to request.referrer }
     format.js {}
   end
end

單擊復選框時,將觸發JavaScript。 “ form.submit”將表單發送到控制器,但是在這種情況下,整個頁面被重新加載。 我想防止這種重新加載。

我也嘗試過此操作,但是頁面也已重新加載。

function submit_function(form){
  form.submit(function () {
    $.ajax({
        type: this.method,
        url: this.action,
        data: $(this).serialize()
    });
    return false;
  });
}

是必須先更改“提交功能”還是通過單擊復選框進行更改?

我現在嘗試了一些東西。 現在邀請頁面不再是新的,但是模型已更新。

function submit_function(form) {

  $.ajax({
    type: form.method,
    url: form.action,
    data: $(form).serialize()
  });

  return false;
}

現在我有更新部分更改的問題。 我該如何使用js?

好的我明白了。 該請求將以js發送,並且不再觸發頁面重新加載。 使用javascript,我已經編輯了復選框。

似乎與這種情況非常相似: 使用javascript .submit()的AJAX rails復選框

他們在那里所做的是重新定義表單提交,改變了行為。

並作為基本建議:使用比較寬松的JS而不是內聯的onchange事件

暫無
暫無

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

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