2012-11-27 53 views
1

我有一個的link_to形式幫手的問題,有一個id:試圖讓jQuery來調用一個提交,其在軌道3

<%= link_to "NEXT", next_wizard_path, :method => :put, :id => 'my-link-check' %> 

我想這個鏈接提交是頁面上的形式(它實際上是一個部分,但它不應該在呈現時它的全部頁面)。所以我把一些jQuery的表頭部分的頂部:

<script> 

$(document).ready(function() { 
    $('#my-link-check').click(function(event){ 
    var form = document.getElementById("edit_put"); 
    if(form!=null) 
     form.submit(); 
    //event.preventDefault(); // Prevent link from following its href, dont think we want this 
    }); 
}); 
</script> 

在一個奇怪的扭曲的form.submit確實工作,如果我在Firebug中有斷點設置,並通過代碼將專門步驟,如果我沒有,它運行的代碼,但提交併不實際工作。我對於發生了什麼事情感到困惑,或者爲什麼會這樣做。我懷疑它是如何使用jquery調用的,因爲我對jquery完全不熟悉。

我應該注意到,這是爲了保存數據在一個窗體上,並且正在爲這個嚮導提供寶貴的紅寶石wicked

我還要指出的邪惡建議「嚮導頁」提交數據異步每當形式通過AJAX感動之間保存數據筆者:

def update 

# save logic here 

    respond_to do |format| 
    format.js do 
    # whatever 
    end 
    format.html do 
    render_wizard 
    end 
end 

,雖然我不知道,是製作的form_for在我們看來,remote => true?我懷疑它比這更涉及。

我也嘗試讓link_to方法成爲put方法,它確實在控制器中調用Update動作,但它沒有傳遞任何信息,所以它沒有保存任何形式的變化......它爲什麼認爲提交動作調用通過JavaScript是一個很好的解決方案,顯然我錯了。

+0

,爲什麼不能在這裏使用它:'變種形式=的document.getElementById( 「edit_put」);'。你可以這樣寫:'var form = $(「#edit_put」);' – gibberish

+0

沒有做出這樣的改變。 – Codejoy

回答

0

我懷疑jQuery的submit只能一個jQuery對象,所以它應該是這樣的:

$(document).ready(function() { 
    $('#my-link-check').click(function(event){ 
    var form = $("#edit_put"); 
    if(form!=null) 
     $(form).submit(); 
    }); 
}); 
+0

沒問題,仍然沒有骰子。它非常奇怪,運行良好,不會拋出錯誤,我可以看到...並且在將斷點放在var表單上時提交,並且我一步一步地通過調用.apply的.submit深入jQuery的某處。 – Codejoy

+0

任何機會'#my-link-check'都有'name =「submit」'?如果是這樣,請給它一個不同的名字。 – crowjonah

+0

由於某種原因,如果我嘗試給form_for一個id,它總是用我已經看到的edit_put重命名。我不確定crowjonah你的意思#my-link-check has name =「submit」? – Codejoy

1

你爲什麼註釋掉event.preventDefault();線?與my-link-check ID的鏈接是否導致實際地址?

看起來像瀏覽器剛剛更改(或重新加載)頁面,腳本執行終止。隨着斷點一切順利。

嘗試取消註釋event.preventDefault();或由於您使用jQuery把return false;form.submit();

+0

這是一個試圖讓邪惡行爲的方式,讓我試試以上看看它是否有效。 – Codejoy

+0

確實返回false工作(event.preventDefault()沒有效果)....以便保存表單。但link_to現在不會按照現在的下一頁(這是正確的,因爲它返回false)所以,沒有辦法讓它仍然轉到下一頁? – Codejoy