2015-10-06 144 views
1

我在防止頁面重新提交表單時遇到了問題。在無需重新加載頁面的Rails中提交表單

我的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我編輯了複選框。

回答

0

似乎非常相似,這種情況:AJAX rails check box using javascript .submit()

他們所做的事情有重新定義表單提交,改變行爲。

而作爲一個基本的建議:用不顯眼的,而JS,而不是內聯的onchange事件

+0

如果我試試這個: - >功能submit_function(形式){ form.submit(函數(){$ 阿賈克斯( { 類型:this.method, url:this.action, data:$(this).serialize() }); return false; }); } ...在JavaScript中,它也重新加載 – DraGott

+0

development.log是什麼意思?像「處理MyController#更新爲HTML」一樣?或「作爲JS」? –

+0

如果我把這個複選框作爲'HTML'發送。因此它在控制器中觸發「redirect_to request.referrer」。我怎樣才能做到'js'? – DraGott

相關問題